关于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就这么断开,是否有办法解决?或者这个问题还可能有别的原因?
谢谢。
...全文
1411 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
fumin 2012-11-08
  • 打赏
  • 举报
回复
引用 1 楼 mymtom 的回复:
不管什么原因,如果send或者recv出现错误,简单的办法就是重新connect
恩,我是准备这么处理的。但是想先问问大家是如何处理这类错误的。 广域网下的数据传输软件很多,应该都有断线重连的功能吧。 是否有比较成熟的网络库可以推荐呢?
mymtom 2012-11-08
  • 打赏
  • 举报
回复
不管什么原因,如果send或者recv出现错误,简单的办法就是重新connect

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧