我正在学习tcp-ip stack,服务器 - 客户端连接。我写了一个简单的客户服务器。客户端和服务器能够相互传输数据而不会出现任何问题。我在同一台机器上运行客户端和服务器。当我以前用ctrl + c关闭服务器时,我发现内核正在发送RST信号而不是FIN。 (请参阅我的问题:Active closure of server sockets)
稍微调查一下,我意识到我的一个客户端处于读取调用状态,相应的服务器线程处于无限状态,而循环则什么都不做(我的一些错误的哑编码)。但是当我删除那个无限循环时,我看到了预期的行为。我可以看到FIN被发送到两个方向。
所以,我想知道为什么tcp层在第一种情况下发送RST。
答案 0 :(得分:0)
最终,你放弃等待另一端接受数据。