小弟刚接粗socket编程,知道网络传输有MUT限制,因此产生以下的疑惑:
1.当我用tcp协议传输数据,调用send方法是,如果数据很大,如100M,是否需要手动分包再send出去呢,还是说什么都不用管,让tcp协议帮我完成就行了?
2.同理,如果使用UDP传输数据又怎么样呢?谢谢!

解决方案 »

  1.   

    循环接受啊,tcp是可靠协议,你不用太担心丢失数据问题,发多少你就接多少事了
      

  2.   

    int nCount =...; // 总的字节数
    char buf[1024] = ...; // 每次发送1024个字节的内容
    while(nCount)
    {
     sprint(buf, "%s", ...);
     nRet  = send(..., buf, strlen(buf)+1);
     if(SOCKET_ERROR == nRet)
     {
       break; // Error
     }
     nCout -= nRet;
    }
      

  3.   

    setsockopt可以设置发送缓冲区大小,默认大小系统设置,超过这个大小send返回错误
      

  4.   

    这才靠谱。。不过应该知道以太网TCP报文段最大应该是MMU(1500字节)-40tcp/ip头 = 1460字节
      

  5.   

    如果是UDP的话接收方组包要比较复杂吧?
      

  6.   

    send的参数是你要发送的字节数,返回值是你实际发送的字节数。
    可以参考http://topic.csdn.net/u/20110103/21/802e84ab-27b3-421f-a7f5-388c2efa8ab6.html