我有一個客戶端,每8秒會發送一個數據包到服務器。如果服務器檢測到數據包發送太快,它將斷開客戶端連接。在客戶端我叫睡眠(8000);在發送數據包之前。在服務器端我使用GetTickCount();來計算數據包之間的時間。我預計這工作沒有任何問題,但我一直斷開連接。數據包計時問題
我使用Wireshark來檢查數據包的時間,這是我得到了什麼: 包號時間 17 8.656064 72 16.957240 115 24.764741
24.764741 - 16.957240 = 7.807501 < 8就是爲什麼我被斷開的原因。 我不明白這一點,因爲在客戶端我叫睡眠(8000);所以它應該每8秒或更多時間發送一次數據包。
第二個數據包遲了0.3秒,第三個數據包早約0.2。 有沒有辦法及時發送這些數據包?
總之,沒有。這是一個完全不確定的系統。路徑中的任何組件(並且有很多)都不會有任何硬性保證。你將不得不添加一個模糊因素。 – Nim