Я создал очень простое приложение для получения DHCP-сообщений с помощью UdpClient.
UdpState s = new UdpState();
s.u = server;
s.e = ClientEndPoint;
server = new UdpClient();
server.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
server.Client.Bind(new IPEndPoint(IPAddress.Any, 67));
server.BeginReceive(new AsyncCallback(OnRecieve), s);
void OnRecieve(IAsyncResult asycnResult)
{
Console.WriteLine("Got something");
// Do something
}
У меня есть устройство, которое запрашивает IP-адрес и поэтому отправляет запрос каждые 5 секунд и т. д. OnRecieve никогда не срабатывает, и я дважды проверил, поставив точку останова в Console.WriteLine.
Чтобы проверить, было ли это соединение или ПК, я скачал Microsoft Network Monitor и сделал захват. Это отлично фиксирует запросы, поэтому я знаю, что это как-то связано с моей программой.
Любые идеи?