为了测试网络应用程序,我编写了一个asio端口“proxy”:它在套接字上侦听应用程序客户端活动,并将所有传入的数据包发送到应用程序服务器监听的另一个套接字,然后返回。
现在,当应用程序或服务器因各种原因断开连接时,“代理”通常会获得EOF,但有时会收到“连接重置”。
因此,问题是:套接字何时因“连接重置”错误而失败?
答案 0 :(得分:6)
当本地端尝试向远端发送数据并且远程端使用设置了RST
标志的数据包(而不是ACK
)应答时,TCP连接被“重置”。这几乎总是发生,因为远程端不知道与远程和本地地址以及远程和本地端口号匹配的任何TCP连接。可能的原因包括:
请注意,如果远程端在与SYN
数据包的TCP连接中应答初始(RST
)数据包,则会将其视为“连接被拒绝”,而不是“通过对等方重置连接”。 / p>