UDP在WinForms应用程序中接收延迟,但不接收控制台应用程序

时间:2015-09-26 16:47:34

标签: c# winforms network-programming udp

我目前正在编写一个侦听UDP 67(DHCP)的程序。出于某种原因,接收数据报似乎有1-2分钟的延迟 - 但仅限于WinForms。在控制台应用程序中执行时,一切都按预期工作,没有明显的延迟(<10秒)。我为每个人使用相同的代码。

编辑:另请注意,有时消息不会超过5分钟。重启程序,它可能会进来。

第二次编辑: Wireshark显示流量进入 - 但我的应用程序无法获取。

有什么想法吗?

控制台代码:

    private const int listenPort = 67;
    private static void StartListener()
    {
        bool done = false;
        UdpClient listener = new UdpClient(listenPort);
        IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, listenPort);
        try
        {
            while (!done)
            {
                Console.WriteLine("Waiting for broadcast");
                byte[] bytes = listener.Receive(ref groupEP);
                int len = bytes.Length;
            }
        }
        catch (Exception e)
        {
            Console.WriteLine(e.ToString());
        }
        finally
        {
            listener.Close();
        }
    }
    public static int Main()
    {
        StartListener();
        return 0;
    }

WinForms代码:

    private const int listenPort = 67;
    public DHCPServer()
    {
        StartListener();
    }
    private void StartListener()
    {
        bool done = false;
        UdpClient listener = new UdpClient(listenPort);
        IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, listenPort);
        try
        {
            while (!done)
            {
                byte[] bytes = listener.Receive(ref groupEP);
                int len = bytes.Length;
            }
        }
        catch (Exception e)
        {   
        }
        finally
        {
            listener.Close();
        }
    }

0 个答案:

没有答案