Ayo*_* M. 9 c sockets network-programming tcp
我正在使用循环从交流Berkeley套接字读取消息,但我无法检测套接字何时断开连接,所以我接受新的连接.请帮忙
while(true) {
bzero(buffer,256);
n = read(newsockfd,buffer,255);
printf("%s\n",buffer);
}
Run Code Online (Sandbox Code Playgroud)
Bru*_*uno 17
您可以通过写入来检测套接字连接的唯一方法.
获取错误read()/recv()将指示连接已断开,但在读取时未收到错误并不意味着连接已启动.
您可能有兴趣阅读本文:http: //lkml.indiana.edu/hypermail/linux/kernel/0106.1/1154.html
此外,使用TCP Keep Alive可以帮助区分非活动连接和断开连接(通过定期发送内容,即使应用程序没有要发送的数据).
(编辑:删除了@Damon指出的错误句子,谢谢.)