C中的TCP多用户聊天服务器

时间:2020-07-08 22:11:50

标签: c tcp server

我正在尝试在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 ++;
}

那里有什么问题?感谢您的帮助

0 个答案:

没有答案