我有一个C / S应用程序。客户端通常使用TCP协议向服务器发送大量数据。它在LAN环境(10MB / s)中运行良好,但在将其迁移到WAN环境(200KB / s)时会发生网络错误。
当我跟踪错误时,我发现客户端中的send()
返回-1,而WSAGetLastError()
首先返回WSAECONNABORTED
;几秒钟后,服务器中的recv()
也返回-1,errno
为ECONNRESET
。
在咨询文档后,我对WSAECONNABORTED
和ECONNRESET
有了基本的了解。
我认为前者是由糟糕的网络造成的:TCP在几次重传失败后关闭套接字。后者是客户意外关闭的结果。
我想知道如何处理这种错误。立即重新连接?或者任何套接字选项可以帮助吗?
答案 0 :(得分:1)
你是对的。
前者是网络问题造成的。您所能做的就是使用新的插座重试。
后者是应用程序协议错误。您在对等方已关闭时发送。这是一个应用程序错误。治愈就是修复这个错误。