Я пытаюсь создать многопользовательский чат-сервер в 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 ++;
}
В чем проблема? Спасибо за помощь