WSAETIMEDOUT 后如何解决?

lqflyc 2009-03-31 10:46:59
环境:
阻塞socket的send发送,缓冲区大小64k,发送超时10s
错误1:发送时发生WSAETIMEDOUT,查找MSDN它说是连接超时,我想在发送的时候应该是表示在10s之内未能发送出去.
错误2:断开网络,发送数据失败,返回WSAETIMEDOUT

解决方法: 一旦返回WSAETIMEDOUT,则重发N次.
结果:错误2解决.错误1解决,但又引发错误3.

错误3: 发送的数据比需要的数据多.
思考: 应该是解决错误1时重发的数据导致最终数据多一些.

求解决方案...
...全文
1906 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lqflyc 2009-03-31
  • 打赏
  • 举报
回复
首先谢谢大家,因为发送的是邮件,所以重新建立是肯定不可能的。
1楼和3楼不行 重新发一样,麻烦两位再看清楚一下,我用的是重发,但最后数据多了,因此可以肯定是重发的时候多发出了一部分数据。
回2楼: 系统缓冲区的最大长度不是64k么?如果再扩大缓冲区也没有多少作用吧.


blackcat242 2009-03-31
  • 打赏
  • 举报
回复
重试发送剩下的数据
bragi523 2009-03-31
  • 打赏
  • 举报
回复
不如扩大缓冲区吧
cnzdgs 2009-03-31
  • 打赏
  • 举报
回复
超时后你可以重新发送或者重新建立连接或者直接失败,也可以显示提示用户来决定如何处理。

18,357

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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