2014-01-25 1 views
0

У меня проблема с отправкой многоадресной рассылки UDP на работу с Windows 8.1.Windows 8.1 UDP Multicast

Следующая простая тестовая программа работает в рамках моста с интерфейсом, работающего под управлением Windows 7 или Ubuntu 13 на том же хосте. По этой причине я уверен, что проблема связана не с тестовой программой Java, а с физической конфигурацией сети.

import java.net.*; 

public class multicast_send { 
     public static void main(String[] args) throws Exception { 
     DatagramSocket socket = null; 
     DatagramPacket outPacket = null; 

     socket = new DatagramSocket(); 
     String msg = "Multicast Test"; 

     outPacket = new DatagramPacket(msg.getBytes(), msg.getBytes().length, InetAddress.getByName("230.0.0.1"), 4446); 

     socket.send(outPacket); 

     System.out.println("Server sent : " + msg); 
     socket.close(); 
     } 
    } 

Неудача под окнами 8.1 проявляется как тихий провал, т.е. сообщение просто не прибудет на удаленном хосте.

Я использовал WireShark на хосте Windows 8.1, и я не вижу никаких доказательств отправки UDP-пакетов.

Брандмауэр Windows 8.1 отключен.

Я попробовал диапазон адресов многоадресной рассылки и порты с тем же результатом (работаю с Win7, Ubuntu, а не Windows, 8,1)

От просмотра взаимосвязанности Интернета я замечаю Есть несколько описаний проблем UDP Multicast введен в Windows 8.1; но этот случай, похоже, не соответствует описаниям проблем.

Окружающая среда java - 1.7.0.51b13 во всех трех случаях.

Есть ли скрытый виджет, который мне нужно настроить в Windows 8.1, чтобы включить многоадресный UDP? Есть ли очевидная проблема с кодом, которую я не обнаруживаю, что является особенностью Windows 8.1?

+1

Хорошо - Решил. Что-то о публикации вопроса заставило меня подумать об этом. Проблема в том, что из-за установки виртуальных машин, исходящий код должен знать, какой интерфейс использовать. поэтому код фиксируется добавлением «socket.setInterface (InetAddress.getByName ()); – user3235214

+0

Либо удалите свой вопрос, либо объясните решение более подробно как ответ. –

ответ

0

Решение состоит в том, что окна 8.1 имеют доступ к более чем одному интерфейсу, адаптеру Ethernet и нескольким адаптерам моста VM.

Как и в случае с другими решениями win8.1 ПРООН, похоже, что в отличие от других ОС не существует интерфейса по умолчанию, выбранного для отправки UDP, поэтому успешная многоадресная рассылка зависит от того, что он явно назначает интерфейс для сокета.

Socket.setinetrface.getbyname ("IP-адрес адаптера Ethernet")

Как только я это сделаю, это работает, как ожидалось.

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

  • Нет связанных вопросов^_^