我有一个使用gevent编写的小型HTTP服务器,它接受传入的连接并使用每个连接的greenlet发回数据。当(本地)客户端死于服务器端写入客户端成功,尽管套接字处于CLOSE_WAIT状态:
TIdHTTP
现在,我希望我使用gevent.socket.socket创建的套接字的send方法失败并出现异常,但我没有得到!
TIdHTTP::OnRedirect
我的期望不正确吗?如果没有,这里可能出现什么问题?
答案 0 :(得分:0)
经过一些调试后,我发现我对套接字API在TCP之上的行为方式的期望是不正确的。潜在读者可能需要仔细阅读 TCP option SO_LINGER (zero) - when it's required
要带走的东西:
总结一下,这意味着我的服务器需要使用作为recv()== 0返回的流末尾通知作为客户端已关闭其连接并相应地采取行动的标志(即关闭相关插座)。