[問題] 如何在socket傳輸資料中控制流量?
開發平台(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傳輸流量的經驗與手法
望各位大大能幫我解惑了
感恩~~<(_ _)>
--
╔《新版十二生肖》═════════════════════════════╗
║ ◣◣ ˍ ║
●●╰‧‧╯◣ ◢ [ ] ιι . .◣ - - ◣ ˍ▁ ◢﹎◣▁▂ ║
◢'' .. '〒' '. ' ' ' ξ ▌ . . ≡◢'◎@@ ●﹏●★' ◣ ˊ▄ˋ ★︰ ║
‵′/ ██╯ █/ ▲╭≡╮ ▃  ̄█ㄟ @@@@ ◣◢ ◥█◤ ˋ▄ˊ ‥ ║
╚═══" " ════════════ "═"══"═"══╯══════liszt1025╝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 112.104.118.100
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1436488604.A.21F.html
推
07/10 09:34, , 1F
07/10 09:34, 1F
→
07/10 09:35, , 2F
07/10 09:35, 2F
→
07/10 09:35, , 3F
07/10 09:35, 3F
推
07/10 09:38, , 4F
07/10 09:38, 4F
感謝回應!
在看完大大的建議後,select和sleep_for都去嘗試了
select搭配socket能夠正常使用
但select似乎一定要綁著socket來使用??
想讓這邊的select當作一個單純作等待的功用
所以嘗試只對第一個nfds和最後一個timeval傳入參數
而其餘三個fd_set的參數都代入NULL
但結果似乎不能等待,沒有任何延遲效果
想問select的等待用法只能夠檢查socket是否有收發訊息才能用嗎?
sleep_for,要宣告<thread>
而這邊的等待時間能夠正常運作
但不知為何
當我宣告<thread>之後
recvfrom本身所具有的阻塞式等待效果會失效
而且select不管怎樣設定參數,也會變成阻塞式(不確定如果有收到訊息後,是否會跳出來)
有點不清楚為何一個宣告會造成這麼多影響
※ 編輯: r596twy (112.104.118.100), 07/11/2015 08:58:05
推
07/11 16:17, , 5F
07/11 16:17, 5F
→
07/11 16:17, , 6F
07/11 16:17, 6F
推
07/11 16:21, , 7F
07/11 16:21, 7F
推
07/11 16:28, , 8F
07/11 16:28, 8F
→
07/11 16:29, , 9F
07/11 16:29, 9F
→
07/11 16:29, , 10F
07/11 16:29, 10F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章