3

我有一个 C/S 应用程序。客户端通常使用 TCP 协议向服务器发送大量数据。它在 LAN 环境(10MB/s)中运行良好,但是当我将它迁移到 WAN 环境(200KB/s)时会发生网络错误。

当我跟踪错误时,我发现send()在客户端返回 -1 并首先WSAGetLastError()返回WSAECONNABORTED;几秒钟后,recv()in server 也返回 -1 和errnois ECONNRESET

WSAECONNABORTED查阅文档后,对和有了基本的了解ECONNRESET。我认为前者是由于网络不好造成的:TCP在几次重传失败后关闭了套接字。后者是由于客户端意外关闭操作造成的。

我想知道如何处理这种错误。立即重新连接?或者任何套接字选项可以提供帮助?

4

1 回答 1

2

你是对的。

前者是网络问题造成的。您所能做的就是使用新的套接字重试。

后者是应用程序协议错误。您在对等方已经关闭时发送。这是一个应用程序错误。解决方法是修复错误。

于 2016-03-10T20:39:44.207 回答