C# UdpClient ".Receive" 只提供由 wireshark 识别的部分数据包

C# UdpClient ".Receive" only giving part of packet identified by 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));
    }
}

我得到(突出显示):

我应该得到:

正如 Visual Vincent 所说,"MICS" 后跟 0x10,然后是 0x00,因此如果您将数据包的那部分视为 null-terminated 字符串,则它是 "MICS\x10"。

如您所见,您必须查看原始字节才能找到其后的数据。

之前的数据是 UDP header、IP header 和以太网 header。从 UDP 套接字读取时,您不会获得那些 headers,您只会获得 UDP 负载。