使用SOCKET中的recvfrom函数来接收数据的。局域网内传送,在边接受边写文件的情况下速度只能达到1M/S,去掉写文件改善也不大,达不到“飞鸽传输”接近10M/S的速度。请问各位大侠,有没有什么方法可以提高接收的速度?谢谢!

解决方案 »

  1.   

    发送端在忽略接收端应答消息的情况下,速度何以达到10M/S(就是不管接收端是否处理完数据都继续发)。如果等待接收端接受数据并写入文件,速度就只有1 M/S,原来考虑问题是否在写文件上,结果去掉这个功能,速度也没明显提升,不知道问题出在哪…… 我是用Winsock API里的ioctlsocket函数判断是否有数据送来,然后调用recvfrom函数进行接收,会不会是使用SOCKET编程影响了速度,好像IPMsg也是用这些函数编的……
      

  2.   

    发送文件还是用TCP的好一些,用UDP还要回应确认
    发送===写入===回应---发送,这个等待回应的周期比较长
    (这个数据包在网络上传输也是要时间的,一来一回差不多也要个1ms吧,每个包1k的话,1M/s是正常的),
    或者应该参考TCP协议实现的活动窗口,每次发一个包然后确认,效率太低。