在局域网内利用udp组播数据。怎么样才能提高udp的数据传输速率?

解决方案 »

  1.   

    不过如果安装了微软消息队列MSMQ以后,就可以支持可靠多播了,这样就可以处理数据包丢失的情况
      

  2.   

    我现在的方法是服务器每发两个数据,sleep 1ms。这样服务器可以在10秒内发送1m数据,而客户机接受800k的数据。也就是说10秒最多只能传输800k,我觉得这样似乎是慢了一点了。环境是在局域网
      

  3.   

    udp发送数据时,只是把数据放到这个socket的系统缓冲区里面就返回了,让底层自主去发送。这样如果服务器发送的速度太快,底层来不及发送,会导致这个系统缓冲区溢出,这样后面的数据就丢失了。建议把系统缓冲区的大小设为0,这样sendto函数将会确保把数据发送到网线上后才返回,客户端的接受socket的缓冲区也可以设为0,这样可以防止从系统缓冲区到用户缓冲区的拷贝过程,效率会有明显提高。
      

  4.   

    setsockopt(
      SOCKET s,                 
      int level,                
      int optname,              
      const char FAR *optval,  
      int optlen                
    );
    level = SOL_SOCKET;optname = SO_SNDBUF 或者 SO_RCVBUF
      

  5.   

    我已经进行了测试,
    单线程,
    UDP多播,
    10M/100M局域网,
    服务端发一个40M的文件,每个数据包40960字节,每发一个包Sleep(2),
    客户端接收并写入硬盘,
    丢包率为0.
    速度达到了7M字节/秒.