我使用UDP进行数据的发送,遇到有数据到一定大小的时候就出现丢包。数据>3000b的时候(大约估计),在局域网的时候测试都可以发送和接受。请问是不是路由器把我发的包抛弃了呀。

解决方案 »

  1.   

    udp发送的时候每个包的大小不要超过ip包的大小。另外发送的太快会丢包,因为包首先被放到路由的缓冲中等待发送,如果在路由还没有将这个缓冲的包发出去就接收到下一个包,那么前面的包就会被覆盖造成丢包
      

  2.   

    ip包的大小可以容纳64k吧
    我的还没有达到4k呢
      

  3.   

    IP包的大小没有那么大,会在调用
        WSADATA wsaData;
        WSAStartup(0x202,&wsaData);
    的时候返回在wsaData结构中,这个值是交换机设置的。
      

  4.   

    WSADATA wsaData;得不到呀
    使用getsockopt 的SO_MAX_MSG_SIZE 也得不到UDP最大的大小
      

  5.   

    另外可以使用 setsockopt 设置 udp包的最大大小呀
      

  6.   

    你进路由的设置看看你的MTU就知道了。