C#UdpClient“.Receive”仅提供wireshark识别的数据包的一部分

时间:2016-05-25 19:14:44

标签: c# networking udp wireshark

基本上我的代码只是在需要它时才捕获部分UDP协议数据包。

UdpClient listener = new UdpClient(43965);
IPEndPoint endpoint = new IPEndPoint(IPAddress.Any, 43965);

long count = 0;

while(1 == 1)
{
    if (listener.Available > 0)
    {
        byte[] data = listener.Receive(ref endpoint);
        Console.WriteLine(Encoding.ASCII.GetString(data));
    }
}

我得到(突出显示):

enter image description here

我应该得到:

enter image description here

1 个答案:

答案 0 :(得分:1)

正如Visual Vincent所说,“MICS”之后是0x10然后是0x00,所以如果你将数据包的那部分视为以空字符结尾的字符串,那就是“MICS \ x10”。

正如您所发现的,您必须查看原始字节以查找其后的数据。

之前的数据是UDP标头,IP标头和以太网标头。从UDP套接字读取时,您不会获得这些标头,只需获得UDP有效负载。