我在Windows上使用原始套接字,並試圖找到限制一組套接字的最大連接速度的方法。限制套接字的最大速度
例如,我有3個服務器的插座,並希望將總下載速度限制爲1mb。
我GOOGLE和無法找到任何相關的東西。有任何想法嗎?
我在Windows上使用原始套接字,並試圖找到限制一組套接字的最大連接速度的方法。限制套接字的最大速度
例如,我有3個服務器的插座,並希望將總下載速度限制爲1mb。
我GOOGLE和無法找到任何相關的東西。有任何想法嗎?
如果您希望將下載速度限制爲每秒1 MB,請以不會在一秒鐘內收回1 MB以上的方式管理您的recv()調用。一旦你讀取了最大1MB的內容,就把線程調節一下(使用ThreadSleep)直到下一秒。這只是一個簡單的方法。
我認爲實現這一目標的唯一方法是通過測量在最後(很多)秒內在每個套接字上發送/接收的數據量,以及延遲發送/接收更多的數據,直到有足夠的時間將總平均帶寬限制到您想要的水平。我已經使用非阻塞套接字和select()實現了這個邏輯,它是可行的(雖然不容易)。
其中一個問題是,您可能需要足夠小的數據包大小以足夠快的速度通過循環來休眠。但它有助於減緩一切。 – jpyllman 2010-04-17 02:06:25