UDP 多播在 2 台不同的 PC 上不起作用

UDP Multicast doesn't work in 2 different PCs

我准备了一个多播客户端服务器。它在同一台计算机上工作,但是当我使用两台不同的 PC 时,其中 none 似乎收到任何东西。 我在两台计算机上都禁用了防火墙。

代码如下:

服务器:

public void send(byte[] sendThis) {
        Thread t = new Thread() {
            DatagramSocket socket;
            InetAddress group;

            @Override
            public void run() {
                try {
                    socket = new DatagramSocket();
                    group = InetAddress.getByName("230.0.0.0");
                    DatagramPacket packet = new DatagramPacket(sendThis, sendThis.length, group, 4446);
                    socket.send(packet);
                    socket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        };
        t.start();
        try {
            t.join(100);
        } catch (InterruptedException e) {
        }
    }

客户:

public byte[] receive() {
            MulticastSocket socket = null;
            byte[] buf = new byte[2000];
            byte[] received = new byte[2000];
            try {
                socket = new MulticastSocket(4447);
                InetAddress group = InetAddress.getByName("230.0.0.0");
                socket.joinGroup(group);
                DatagramPacket packet = new DatagramPacket(buf, buf.length);
                socket.receive(packet);
                // received = packet.getData();
                received = new String(packet.getData(), packet.getOffset(), packet.getLength()).getBytes();
                socket.leaveGroup(group);
                socket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return received;
        }

在另一台机器上更改了端口(服务器4447,客户端4446)

看来 AP 需要稍微更改一下配置:应该启用 IGMP(Internet 组管理协议)。

有些 AP 不支持此功能(我的不支持),所以我不得不在不同的网络中尝试。