2010-02-16 4 views
0

Я следующий код, который отлично работает на моем 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)

Я что-то упустил?

+0

Требуется добавить - код также отлично работает на Win2008, когда пакет отправляется с локальной машины (как отправителя, так и получателя на том же компьютере). Он просто не работает, когда он отправляется с внешней машины во внутренней сети (192.x.x.x), хотя Wireshark показывает пакет как прибывающий (поэтому я сомневаюсь, что VMWare виноват). Когда отправляется с внутренней машины, она отправляется через интерфейс IP, а не через loopback IP. –

ответ

0

У меня есть работа, хотя я не уверен, в чем проблема. Возможно, это была некорректная конфигурация брандмауэра на компьютере (я пытаюсь настроить это приложение как брандмауэр), но это выходит за рамки этой темы.

Смежные вопросы