【问题标题】:Java Multicast Socket doesn't receive anything on WindowsJava 多播套接字在 Windows 上不接收任何内容
【发布时间】:2018-10-12 09:44:30
【问题描述】:

我需要在多播中发送和接收。

这是我的发件人:

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

当我运行它们时,接收器没有收到任何东西。 我在禁用了防病毒和防火墙的两台不同的 PC(均装有 Windows)上进行了尝试。我还尝试了不同的局域网:我的路由器,我的手机热点。 它在本地机器上也不起作用。

我该如何解决这个问题? 谢谢

【问题讨论】:

  • 你不是在广播,你是在多播。如果此应用程序在 Internet 上运行,则需要路径中所有 ISP 的合作。
  • 检查多播是否启用:serverfault.com/questions/262634
  • @EJP 应用程序通过 LAN 运行。我不需要互联网。
  • @StephenC 这是结果:Ambito Riferimenti Ultimo Indirizzo ---------- ----------- ------ ---- ----------------------------- 0 0 SÌ 224.0.0.1 0 2 SÌ 224.0.0.251 0 1 SÌ 224.0.0.252 0 1 SÌ 239.255.255.250

标签: java windows sockets multicast receiver


【解决方案1】:

我在笔记本电脑上编译并运行了您的代码,发送方和接收方在同一台机器上。有用。 (Fedora 26 Linux,Java 1.8.0_171)

问题似乎与您的网络有关,而不是应用程序代码。所以,既然这不是一个编程问题,我认为你最好在 ServerFault 网站上问这个问题......他们专门研究网络等等。

【讨论】:

  • 我在同一台笔记本电脑上使用 Oracle 虚拟机在 Ubuntu 上尝试了我的代码。有用。我认为问题是Windows。 Windows 有一些事情要做。但是什么?
  • “我认为你最好在 ServerFault 网站上问这个问题”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多