|
|
1
22
这不同于:
虽然这对我来说并不罕见
最后,正如dwc所提到的,
|
|
|
2
2
认为对方刚刚关闭了连接是错误的。在TCP级别上,另一方只能半关闭连接(或中止连接)。如果两侧都关闭()(或关闭()),则连接通常完全关闭。如果双方都这么做,shutdown()实际上对双方都成功! 问题是shutdown()没有 成功地普通(半)关闭连接,既不是第一个关闭连接,也不是第二个。从POSIX docs for shutdown()中列出的错误来看,ENOTCONN是最不合适的,因为其他错误表明传递给shutdown()的参数存在问题(或处理请求的本地资源问题)。 发生了什么事?如今,双方之间的某个NAT设备可能已经放弃了关联,并作为一种反应发送重置数据包。重设连接在IPv4中非常常见,您可以在代码中的任何地方找到它们,甚至在shutdown()中伪装为ENOTCONN。
|
|
|
3
1
这是因为,在关闭()套接字时,套接字的缓冲区中有数据等待传递给已关闭()或关闭()其接收套接字的远程方。 我还没有完全理解套接字是如何工作的,我是一个noob,我甚至没有找到实现这个“关机”功能的文件,但是看到整个套接字几乎没有用户手册,我开始尝试所有的可能性,直到在“受控”环境中出错。可能是其他原因,但经过多次尝试后,我终于接受了以下解释:
|
|
|
4
0
|
|
|
5
0
如果你一开始就确定你连接正确,
在任何情况下,这意味着插座未连接。去把那个插座清理干净。它死了。打电话没问题
|