TCP-сокет с использованием C (сервер) - PullRequest
0 голосов
/ 11 октября 2018

Я кодировал программу на С сокета tcp, но после выполнения сервер возвращает ошибку из функции accept, но я не могу понять, почему ..

Если вы, ребята, можете мне помочь, этобудет оценено.Кроме того, если у вас есть какие-либо советы о том, как я запрограммировал это, пожалуйста, не стесняйтесь, сообщите мне.

Вот мой код:

#include <unistd.h> 
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <netinet/in.h>

int main(int argc, char *argv[])
{
  int listenSocket, status, socketClient;
  unsigned short int msgLength;
  struct addrinfo hints, *servinfo;
  struct sockaddr_in clientAddress;
  socklen_t clientAddressLength = sizeof clientAddress;
  char msg[101];

  //Test port number
  if (argc != 2) {
      fprintf(stderr,"Usage : %s [NUMERO_PORT]\n",argv[0]);
      return 2;
  }

  memset(&hints, 0, sizeof hints);
  hints.ai_family = AF_INET;       // IPv4
  hints.ai_socktype = SOCK_DGRAM;  // UDP
  hints.ai_flags = 0;     //Car on fait le test sur la meme machine

  if ((status = getaddrinfo(NULL, argv[1], &hints, &servinfo)) != 0) {
    fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(status));
    return 3;
  }

  if ((listenSocket = socket(servinfo->ai_family, servinfo- 
       >ai_socktype, servinfo->ai_protocol)) == -1) {
     perror("socket:");
    return 4;
  }

  if (bind(listenSocket, servinfo->ai_addr, servinfo->ai_addrlen) == 
   -1) {
     close(listenSocket);
     perror("bind:");
     return 5;
   }

  listen(listenSocket,5);

  int sizeOfSockAddr = sizeof(clientAddress);
  socketClient= accept(listenSocket, NULL, NULL);
  if (socketClient < 0) {
    fprintf(stderr,"Erreur accept\n");
    return 6;
  }


  freeaddrinfo(servinfo);

  printf("Waiting for a client's request %s\n", argv[1]);

  while (1) {
   //some things
  }
}`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...