[问题] 如何在socket传输资料中控制流量?

楼主: r596twy (汤姆熊)   2015-07-10 08:36:40
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
Visual Studio 2013
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
winsock2.h
Ws2_32.lib
问题(Question):
写了一个由server传送资料和client接收资料的socket程式
因为主要用途是要用在影音串流
所以是采用UDP
而我想控制并限定server每秒传送给client端的流量
但不清楚该如何作...
补充说明(Supplement):
因为传送的资料是二进制格式
所以目前传送与接收档案的方式,分别是用传讯息的方式
用sendto和recvfrom来达成
目前没有限定流量的情况下
每秒约可达到160Mbps
原本想透过Sleep来达到控制每秒可传送资讯的流量效果
但是当我试图用Sleep(1),也就是每1ms控制server传送一次资料时
每秒流量却下降至约200Kbps...
实在超出自己预计希望下降至的流量太多
所以想请问各位大大在实作控制server传输流量的经验与手法
望各位大大能帮我解惑了
感恩~~<(_ _)>
作者: LiloHuang (十年一刻)   2015-07-10 09:34:00
Sleep(1) 的精度只到 millisecond,可用 select 来模拟精度达到 us。可用 std::this_thread::sleep_for(std::chrono::microseconds(usec)); 或用 boost 版本比较取巧但不好的做法就是用 busy loop 来 sleep

Links booklink

Contact Us: admin [ a t ] ucptt.com