Java Multicast Socket ничего не получает в Windows - PullRequest
0 голосов
/ 02 мая 2018

Мне нужно отправлять и получать в многоадресной рассылке.

Это мой отправитель:

public static void main(String[] args) {

    MulticastSocket socket = null;
    try {
        socket = new MulticastSocket(3575);
        int n = 1;
        while (n <= 100) {
            byte[] buf = new byte[256];
            // non aspetta la richiesta
            String dString = new Date().toString();
            buf = dString.getBytes();

            // invia il messaggio in broadcast
            InetAddress group = InetAddress.getByName("230.0.0.1");
            DatagramPacket packet = new DatagramPacket(buf, buf.length, group, 3575);
            socket.send(packet);
            System.out.println ("Broadcasting: "+dString);
            Thread.sleep(1000);
            n++;
        }
        socket.close();
    }catch(Exception e) { e.printStackTrace(); socket.close();}

}//main

Это мой получатель:

public static void main(String[] args) throws IOException {

    MulticastSocket socket = new MulticastSocket(3575);
    InetAddress group = InetAddress.getByName("230.0.0.1");
    socket.joinGroup(group);
    DatagramPacket packet;
    for (int i = 0; i < 100; i++) {
        byte[] buf = new byte[256];
        packet = new DatagramPacket(buf, buf.length);
        socket.receive(packet);
        String received = new String(packet.getData()).trim();
        System.out.println("Time: " + received);
    }
    socket.leaveGroup(group);
    socket.close();
}//main

Когда я запускаю их, получатель ничего не получает. Я пробовал на двух разных ПК (оба с Windows) с отключенным Антивирусом и брандмауэром. Я также пытался с другой локальной сетью: мой маршрутизатор, моя точка доступа телефона. Он не работает ни на локальной машине.

Как я могу решить проблему? Спасибо

1 Ответ

0 голосов
/ 02 мая 2018

Я скомпилировал и запустил ваш код на своем ноутбуке с отправителем и получателем на одной машине. Оно работает. (Fedora 26 Linux, Java 1.8.0_171)

Кажется, что проблема связана с вашей сетью, а не с кодом приложения. Так что, поскольку это не проблема программирования, я думаю, вам лучше задать этот вопрос на сайте ServerFault, где они специализируются на работе в сети и так далее.

...