Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C套接字编程:单服务器多客户端 (i=0;i_C_Socketserver - Fatal编程技术网

C套接字编程:单服务器多客户端 (i=0;i

C套接字编程:单服务器多客户端 (i=0;i,c,socketserver,C,Socketserver,当客户端断开连接时,服务器将重复客户端发送的最后一条消息。我如何修改它,使其不再重印客户的消息?提前非常感谢检查valread==-1。忽略这种情况,在数组开始之前写入,然后输出上一个请求。一个简单的方法是将==0更改为只需删除行printf(“%s”,request)?如果删除printf(“%s”,request),它将不会打印我以前的消息。非常感谢您的帮助非常感谢您的帮助。我现在就试试看它行了!!非常感谢您抽出时间,我对我之前的评论表示抱歉。 for (i = 0; i < clim

当客户端断开连接时,服务器将重复客户端发送的最后一条消息。我如何修改它,使其不再重印客户的消息?提前非常感谢

检查
valread==-1
。忽略这种情况,在数组开始之前写入,然后输出上一个请求。一个简单的方法是将
==0
更改为
只需删除行
printf(“%s”,request)
?如果删除printf(“%s”,request),它将不会打印我以前的消息。非常感谢您的帮助非常感谢您的帮助。我现在就试试看它行了!!非常感谢您抽出时间,我对我之前的评论表示抱歉。
for (i = 0; i < climax; i++) //input output operations from clients
{
    sockfd = client_socket[i];
    if (FD_ISSET( sockfd , &fds))
    {
        if ((valread = read( sockfd , request, 1024)) == 0) //check for disconnection of client
        {
            getpeername(sockfd , (struct sockaddr*)&cliaddr , &length); //obtain details of disconnected client
            printf("Client Disconnected: IP::%s %s , port %d . \n", ipv6client,
                   ipv4client, ntohs(cliaddr.sin_port));
            close( sockfd );
            client_socket[i] = 0; //socket closing and set socket to null to be reused
        } else{
            request[valread] = '\0'; //convert request to string and prepare for parsing

            printf("Request from ::%s %s , port %d: ", ipv6client,
                   ipv4client, ntohs(cliaddr.sin_port));

            printf("%s",request);
        }
    }
}