我正在尝试在C中建立一个多用户聊天服务器,并且在捕获用户假名时遇到问题。来自用户的第一条消息应用作其笔名。
我正在用telnet测试服务器,但是每次连接到服务器时,它都会向服务器发送不可读的消息,并且服务器不等待来自客户端的第一条消息。
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 ++;
}
那里有什么问题?感谢您的帮助