我是一个开源项目的开发人员,最近遇到了一些问题。服务器认为它已经完全响应了一个socket(即对于失败请求,它已经发送了回复或关闭了其自身),而客户端则陷入了轮询中。通过一些研究,我发现close()并不总是会生成POLLHUP事件,但shutdown(sock,2)可以。
鉴于此,我考虑在错误处理事件中添加shutdown(sock,2)(除了close()调用外)。有人知道这样做可能会导致什么问题吗?我是否想错了?我认为如果服务器认为socket已关闭,则客户端肯定不应尝试使用该socket进行任何其他操作,我想不出不添加此方法的理由,但我没有长时间使用TCP连接,希望能得到一些建议。