2011-02-10 82 views
2

我在做linux编码体系结构。 我有关于套接字服务器和客户端的问题。 我做了一个示例代码,其中服务器继续接受连接,并且客户端连接到服务器。 如果有人有删除网络电缆,所以我断开客户端(客户端套接字与PC断开),而在服务器端连接仍然活着,因为我不能通知客户端断开,因为网络拔掉。如何知道Socket客户端断开连接?

我怎么知道客户端断开连接?

感谢, 尼尔

回答

0

SIGPIPE当地插座和EOF在读每一个套接字类型。

+0

我读了错误,而一个线程被阻塞在读,但并不总是在我读得到错误。找出套接字的准确方法是什么? – 2011-02-10 17:40:56

1

您需要在套接字上配置keepalive或发送应用程序级心跳消息,否则侦听端将无限期地等待数据包到达。如果您控制协议,则应用程序级别的心跳可能更容易。另一方面,这两种解决方案都有助于保持连接在网络中的NAT网关之间保持连通。

看到这个答案:Is TCP Keepalive the only mechanism to determine a broken link?

也看到这个Linux文档:http://tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/#programming

相关问题