UDP组播不适用于2台不同的PC

时间:2018-06-17 17:29:02

标签: java server udp client multicast

我准备了一个多播客户端服务器。它可以在同一台计算机上运行,​​但是当我使用两台不同的PC时,它们似乎都没有收到任何东西。 我在两台计算机上都禁用了防火墙。

以下是代码:

服务器:

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)中更改端口

1 个答案:

答案 0 :(得分:0)

似乎AP需要进行一些配置更改:应该启用IGMP(Internet组管理协议)。

某些AP不支持此功能(我的不支持),因此我不得不在其他网络中尝试。