2015-05-24 3 views
0

Я делал учебник оракула о вещании для нескольких получателей, но я получаю сообщение об ошибке на стороне клиента. в качестве примера состояний оракула, у меня есть код клиентаКак слушать многоадресные сообщения в java?

public static void main(String[] args) throws IOException { 
    MulticastSocket socket = new MulticastSocket(4446); 
    InetAddress group = InetAddress.getByName("203.0.113.0"); 
    socket.joinGroup(group); 

    DatagramPacket packet; 
    for (int i = 0; i < 5; i++) { 
     byte[] buf = new byte[256]; 
     packet = new DatagramPacket(buf, buf.length); 
     socket.receive(packet); 

     String received = new String(packet.getData()); 
     System.out.println("Quote of the Moment: " + received); 
    } 

    socket.leaveGroup(group); 
    socket.close(); 
} 

Который бросает исключение

Exception in thread "main" java.net.SocketException: Not a multicast address 
    at java.net.MulticastSocket.joinGroup(MulticastSocket.java:310) 
    at BroadcastListener.main(BroadcastListener.java:11) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:483) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134) 

Что случилось?

ответ

0

многоадресной IP-адрес должен начинаться с 224 .., в соответствии с RFC 5771.

Из википедии:

групповых адресов IPv4 определяются ведущих адресных битов 1110, происходящих из Классовые дизайн сети в начале Интернет, когда эта группа адресов была обозначена как класс D. Префикс безсолевой междоменной маршрутизации (CIDR) этой группы: 224.0.0.0/4.

+0

ну, так какой адрес я должен использовать? если я использую, например, 224.0.113.0, он выдает исключение, говорящее «Невозможно присвоить запрошенный адрес», – Carmine

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