我的程序使用UdpClient嘗試從27個主機接收27個響應。響應的大小是10KB。我的寬帶傳入帶寬是150KB/s。爲什麼我無法獲取所有UDP數據包?
27個響應從主機幾乎在同一時間,每10秒發送。
但是,我只能接受8 - 每次17響應。我可以收到的答覆數量相當動態,但在範圍之內。
有誰能告訴我爲什麼?爲什麼我不能收到所有的?
我明白UDP是不可靠的。但我試着在同一時間收到5到10個回覆,但它的工作。我猜網絡鏈接並不是那麼糟糕。
該代碼非常簡單。在27臺主機上,我只是使用UdpClient向我的機器發送10KB。
在我的機器,我有一個UdpClient接收數據報。每次我得到一個數據,我創建一個線程來處理它(基本上處理它意味着只打印出「我收到10KB」,但它運行在一個線程中)。
listener = new UDPListener(Port);
listener.Start();
while (true) {
try {
UDPContext context = listener.Accept();
ThreadPool.QueueUserWorkItem(new WaitCallback(HandleMessage), context);
} catch (Exception) { }
}
如果我減少到3KB響應的大小的情況下獲得更好的可以接收大約25答覆。
還有什麼想法? UDP緩衝區問題?
考慮您可以在其他地方你的網絡堆棧丟棄UDP數據包 - 你的寬帶連接上不一定有。 – 2010-03-08 16:50:33
從本質上講,隨着時間的推移發現的是,一旦將UDP「修補」到可靠開始的位置,就會有一個緩慢,笨重,不可靠的TCP堆棧。只是在說'。 – KevinDTimm 2010-03-08 16:53:16