Многопользовательский чат-сервер TCP в C - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь создать многопользовательский чат-сервер в C, и у меня проблема с распознаванием псевдонима пользователя. Первое сообщение от пользователя должно использоваться как его псевдоним.

Я тестирую свой сервер с te lnet, но каждый раз, когда я подключаюсь, он отправляет нечитаемое сообщение на сервер, а сервер не ждет для первого сообщения от клиента.

if (FD_ISSET(sock, &readfds)) {
            SOCKADDR_IN csin = {0};
            size_t sinsize = sizeof(csin);
            int clientsocket = accept(sock, (SOCKADDR *) &csin, (socklen_t *restrict) &sinsize);
            if (clientsocket == -1) {
                printf("Verbindung konnte nicht angenommen werden\n");
                continue;
            } else
            {
                printf("Verbindung angenommen\n");
            }
        

            //get clients username
            recv(clientsocket, buffer, BUFFER_SIZE - 1, 0);

            max = clientsocket > max ? clientsocket : max;

            FD_SET(clientsocket, &readfds);

            Client c;
            c.sock = clientsocket;
            strncpy(c.name, buffer, BUFFER_SIZE - 1); //store username in c.name
            printf(c.name);
            clients[actual] = c;
            actual ++;
}

В чем проблема? Спасибо за помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...