关于tcp的ECONNABORTED错误
fumin 2012-11-08 08:51:51 我有一个C/S结构的程序,客户端(MFC)使用tcp向服务器(Linux C)发送数据,在局域网环境下没有出现什么问题。但是当我在广域网环境进行数据传输时,经常出现网络错误。这个错误通常出现在传输中途,发送了上百MB数据后才发生,而传输少量数据不太出错。
追踪程序,发现首先是客户端调用send()返回-1,WSAGetLastError为WSAECONNABORTED;过了几秒钟后,服务器端的recv()返回-1,errno为ECONNRESET。
在网上查阅了一些资料,ECONNABORTED通常发生在重传(一定次数)失败后,强制关闭套接字;ECONNRESET错误则发生在对方意外关闭套接字后。
因此,我对这个问题理解为网络太拥塞,导致tcp自动断开。但是在很多环境下,我们并不希望tcp就这么断开,是否有办法解决?或者这个问题还可能有别的原因?
谢谢。