Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 读取UDP连接中接收到的正确数据_C#_.net_Sockets_Udp - Fatal编程技术网

C# 读取UDP连接中接收到的正确数据

C# 读取UDP连接中接收到的正确数据,c#,.net,sockets,udp,C#,.net,Sockets,Udp,我在64位Windows7上用c#.NET4.0编写了一个应用程序。 应用程序正在侦听特定端口上的UDP数据,我正试图借助Windows DNS确定请求者的主机IP。要做到这一点,我需要在收到的UDP信息上提供正确的URL,但由于大量垃圾和消息的不一致性(缺少格式),我无法正确获取它。 这是侦听UDP请求的代码: public void StartListener() { m_udpClient = new UdpClient(53); IPEndPoint groupEP =


我在64位Windows7上用c#.NET4.0编写了一个应用程序。 应用程序正在侦听特定端口上的UDP数据,我正试图借助Windows DNS确定请求者的主机IP。要做到这一点,我需要在收到的UDP信息上提供正确的URL,但由于大量垃圾和消息的不一致性(缺少格式),我无法正确获取它。 这是侦听UDP请求的代码:

public void StartListener()
{
    m_udpClient = new UdpClient(53);
    IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, 53);

    try
    {
        while (true)
        {
            byte[] bytes = m_udpClient.Receive(ref groupEP);
            Console.WriteLine("UDPListener::StartListener Waiting for broadcast");
            string udpData = Encoding.ASCII.GetString(bytes, 0, bytes.Length);

            Console.WriteLine("UDPListener::StartListener Received broadcast from {0} :\n {1}\n",
                groupEP.ToString(), udpData);
        }
        Console.WriteLine("UDPListener::StartListener UDP server stopped!");
    }
    catch (Exception e)
    {
        Console.WriteLine(e.ToString());
    }
}
代码运行良好,它正在接收udpData上的数据,但是它有很多垃圾,我无法找到一种方法来只提取必要的信息。我收到的样本:
??? ? ?www?google?com
第二条消息:
“\0\0\0\0spsprodch1su1dedicatedsb2\nservicebus\awindowsnet\0\0\0”

你知道我如何从这些数据中获得有效信息吗?THX

UdpClient.Receive
只返回对等方发送的UDP数据报。因为您使用的是端口53,所以我假设您需要DNS查询。在这种情况下,您不能简单地将此UDP数据报视为字符串,但必须将该数据报解析为DNS数据包,请参阅以了解数据包格式。

当您应该使用UTF8时,您是否使用ASCII对其进行编码?UTF8给出了与ASCII相同的结果,并作为默认值,在我看来,接收到的消息中有大量数据不是unicode或ascii,只是随机字节。嗯,你从哪里得到这些数据?还可以尝试使用此编码.ASCII.GetString(字节);即使这不会改变任何事情,我认为很明显,发送者在发送垃圾。