2010-11-12 60 views

回答

1

UdpClient是一個非常高級的接口,它不提供對原始數據包數據的訪問。要獲取這些信息,您需要使用一些低級API並自行處理數據包。

然而,在實踐中,數據包在傳輸過程中遭到破壞的機率非常低 - 大多數情況下,您要麼獲得正確的數據包,要麼根本沒有收到數據包。數據包的頭部大小通常是固定的(UDP頭部爲8個字節,IP頭部爲20個字節),因此您可以將此值添加到每個數據報的大小(由UdpClient.Receive返回)以獲取總數據包尺寸。

+0

當你說在運輸途中受到損壞的數據包非常低時,你的意思是數據包在運輸過程中會受到損壞。這些數據包確實佔用了信道。有什麼方法可以記錄這個嗎?謝謝。 – 2010-11-13 09:08:22

+0

@publicENEMY:爲此,您需要使用諸如[WinPcap](http://www.winpcap.org/)這樣的工具,它可以訪問進入系統的* all *包,然後您必須手動過濾和處理數據包。 – casablanca 2010-11-13 16:03:21

+0

謝謝。我發現.net winpcap,我認爲應該做你的建議。 – 2010-11-15 07:07:10