Tcp报文连续发送为何有错;
有函数这样:
fun()
{
  send();//tcp 报文发送
  send();//tcp 报文发送
}
这样就有有丢包的现象。
如果改成这样就可以了:
fun()
{
  send();//tcp 报文发送
  Sleep(10);//增加一个延时
  send();//tcp 报文发送
}请高手指教原因。感谢了。

解决方案 »

  1.   

    缓冲问题.  写入数据太急了就丢失了,  建议检查send 的返回值. 如果是<0 则发送失败了,
    否则为发送的字节数,要检查是不是跟要发送的字节数相等,如果小了,(大是不可能的)
    说明发送不完整,应继续调用send 函数发送剩余数据. 直到全部发送完毕.
      

  2.   

    bool SafeSend(SOCKET s, char* p, int len)
    {
        while(len>0)
        {
           int is =send(s, p, len, 0);
           if(is<0) return false;
           p+=is; 
           len-= is;
        }
        return true; 
    }
      

  3.   

    http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=207387