我已經注意到,當我從udp套接字以偶數間隔發送數據包時,發送的第一個數據包似乎被延遲。例如,如果我每100毫秒發送一次數據包,我發現在我的網絡上,接收數據包的時間間隔平均爲100毫秒,平均標準偏差爲4。然而,第一個和第二個數據包的接收時間之間的差距通常在10到40毫秒左右 - 如您所見,這顯然是一個統計上顯着的差異,所以我的問題是,是什麼造成的?什麼導致udp接收延遲?
我在linux上使用C語言的sendto函數。有人建議,延遲可能是由arp解析導致的,從而阻止發送數據包直到目標ip被轉換爲mac地址 - 這可能嗎?如果我重新啓動發送程序,第一個數據包又需要很長時間,而且延遲不一致--10到40 ms是一個相當大的範圍。
我需要找出爲什麼這第一個數據包花費太長時間,以及如何解決它。
編輯:用pcap進一步分析表明發送程序正在以正確的間隔發送數據包。問題必須與接收器有關,它使用select()等待可讀套接字,然後調用recvfrom並打印數據包。有沒有我可能不知道的緩衝?
你可以使用嗅探器來檢查它是否與計算機有關的東西與數據包的傳輸有關。 – 2010-12-20 10:55:45
嘿,可以誰downvoted請張貼爲什麼? – Benubird 2010-12-20 13:05:16