データグラムを収集しようとしている単純な UDP リスナーがあります。私のデータグラムは、2 つのデータ形式のいずれかになります。最初のデータ形式では、期待どおりにプログラムでデータを受信しています。2 番目の例では、UDP データが Wireshark 経由でネットワーク インターフェイスに渡されていることは確認できますが、プログラムからデータが受信されたことを示す兆候はまったくありません。これらは、Windows が拒否した不正な UDP パケットである可能性があると考えましたが、Wireshark はそれらを UDP としてラベル付けしています。私のコードは以下の通りです:
static void Main(string[] args)
{
Thread thdUdpServer = new Thread(new ThreadStart(serverThread));
thdUdpServer.Start();
}
static void serverThread()
{
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
socket.Bind(new IPEndPoint(new IPAddress(0), 2000));
while (true)
{
byte[] responseData = new byte[128];
socket.Receive(responseData);
string returnData = Encoding.ASCII.GetString(responseData);
Console.WriteLine(DateTime.Now + " " + returnData);
}
欠落しているパケットはすべて、次のような (ASCII に変換された) 29 バイトのデータグラムです。
#01RdFFFF...?...... ........F
Wireshark はそれらの存在を示すのに、.NET はそれらを認識していないように見えるのはなぜですか?