Я следующий код, который отлично работает на моем Windows 2003 сервер:Не удается получить многоадресных на Windows Server 2008
static void Main(string[] args)
{
UdpClient sock = new UdpClient(5353);
IPAddress multicastIP = IPAddress.Parse("224.0.0.251");
IPEndPoint multicastEndpoint = new IPEndPoint(multicastIP, 5353);
sock.JoinMulticastGroup(multicastIP);
IPEndPoint iep = new IPEndPoint(IPAddress.Any, 0);
Console.WriteLine("Ready...");
byte[] data = sock.Receive(ref iep);
...
sock.Close();
}
же на моем сервере Windows 2008 R2 (работает в VMWare Workstation с одним сетевым адаптером настроен как NAT) мое приложение не получает никаких пакетов.
Если я запустил wirehark, это показывает, что пакеты доставляются на устройство (они выглядят правильно и имеют правильный IP-адрес и порт многоадресной передачи), но прикладной уровень не получает никакого значения (он блокирует навсегда в .Receive)
Я что-то упустил?
Требуется добавить - код также отлично работает на Win2008, когда пакет отправляется с локальной машины (как отправителя, так и получателя на том же компьютере). Он просто не работает, когда он отправляется с внешней машины во внутренней сети (192.x.x.x), хотя Wireshark показывает пакет как прибывающий (поэтому я сомневаюсь, что VMWare виноват). Когда отправляется с внутренней машины, она отправляется через интерфейс IP, а не через loopback IP. –