以下是我正在尝试执行的操作: 当新消息可用时,服务器将消息发送给连接的客户端。另一方面,客户端在连接时尝试使用send()向服务器发送消息,然后使用recv()接收消息,之后客户端调用close()来关闭连接。插座未正确关闭的原因?
有时候,客户端完成后,服务器试图从客户端接收消息将导致104-“由对等方重置连接”错误。当发生这种情况,Wireshark的显示,由客户机发送的最后两个分段是:
1的ACK确认收到由服务器
2. RST发送的消息/ ACK
否FIN由客户机发送的。
为什么会发生这种情况,如何才能在客户端正确关闭套接字?
感谢您的回答。这正是我遇到的。你能否详细说明“当B看到EOF时,它知道A正在启动关机”?我应该怎么做我的代码呢? – 2010-04-13 09:22:39
没关系。我在这里找到了我的答案(2.6):http://www.faqs.org/faqs/unix-faq/socket/ – 2010-04-13 09:48:17
如果您调用'recv()'或'read()',这些接口通过返回来指示EOF 0。 – mark4o 2010-04-13 15:02:26