gpt4 book ai didi

c - 通过选择等待数据不起作用

转载 作者:太空狗 更新时间:2023-10-29 15:59:56 25 4
gpt4 key购买 nike

我目前正在从事一个项目,该项目涉及连接到服务器并等待数据的多个客户端。我正在使用选择并监视传入数据的连接。但是,客户端只是继续不打印任何内容,就好像 select 已经发现传入数据一样。也许我攻击这个错误?

对于服务器发送的第一条数据,它是正确显示的。然而,服务器随后断开连接,客户端继续输出空行。

        FD_ZERO(&readnet);
FD_SET(sockfd, &readnet);
while(1){

rv = select(socketdescrip, &readnet, NULL, NULL, &timeout);
if (rv == -1) {
perror("select"); // error occurred in select()
} else if (rv == 0) {
printf("Connection timeout! No data after 10 seconds.\n");
} else {
// one or both of the descriptors have data
if (FD_ISSET(sockfd, &readnet)) {
numbytes = recv(sockfd, buf, sizeof buf, 0);
printf("Data Received\n");
buf[numbytes] = '\0';
printf("client: received '%s'\n",buf);
sleep(10);
}
}
}

最佳答案

我认为您需要检查 recv 的结果.如果它返回零,我相信这意味着服务器已关闭套接字。

此外(取决于实现),您可能需要将 socketdescrip+1 传递给 select

关于c - 通过选择等待数据不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2992547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com