环境:
 阻塞socket的send发送,缓冲区大小64k,发送超时10s
 错误1:发送时发生WSAETIMEDOUT,查找MSDN它说是连接超时,我想在发送的时候应该是表示在10s之内未能发送出去.
 错误2:断开网络,发送数据失败,返回WSAETIMEDOUT
 
 解决方法: 一旦返回WSAETIMEDOUT,则重发N次.
 结果:错误2解决.错误1解决,但又引发错误3.
 
 错误3: 发送的数据比需要的数据多.
 思考: 应该是解决错误1时重发的数据导致最终数据多一些.
 
 求解决方案...

解决方案 »

  1.   

    超时后你可以重新发送或者重新建立连接或者直接失败,也可以显示提示用户来决定如何处理。
      

  2.   

    首先谢谢大家,因为发送的是邮件,所以重新建立是肯定不可能的。
    1楼和3楼不行 重新发一样,麻烦两位再看清楚一下,我用的是重发,但最后数据多了,因此可以肯定是重发的时候多发出了一部分数据。
    回2楼: 系统缓冲区的最大长度不是64k么?如果再扩大缓冲区也没有多少作用吧.