- 论坛徽章:
- 0
|
原帖由 epegasus 于 2009-9-21 15:07 发表 ![]()
以1M算,32MB能缓冲20多秒,网络速度一般都是10M,100M的,何来"网络传输跟不上数据产生速度"一说?
我在UNIX.Network.Programming.Volume.1中,查了socket的buffer默认情况是4096Byte,我目前开发板上的linux就是这个上限,但该socket的接收和发送缓冲区,据书上所说,最多能够设置到from 8,192 to 61,440 bytes. 所以我觉得虽说网卡是10/100M自适应的,但是最大只能达到61440 *8约为500K比特,远不到1M,所以10/100M是个和操作系统有关系的理论值吗? 小弟对这不太清楚哈!
另外在我的开发板上,我增加我的发送缓冲区大小,但是好像不起作用,不知道是何原因!可能是我的客户端程序构建的有问题,服务器每发送一块数据过来,我需要休眠不到1秒,才可以继续向我的windows上客户端发送下一包数据,不然客户端会停机。在客户端这种情况,如果用线程处理好的话,是否可以消除这种情况!
正因为 我服务器段休眠约一秒之后,在发送下一包4096Byte的数据,才导致了“网络传输跟不上数据产生速度"一说!
对于这种大数据量的 网络传输,有没有什么开源的类似代码参考呢? 谢谢指教! |
|