我目前正在编写一个侦听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();
}
}