UDP组播在2台不同的PC中不起作用

问题描述 投票:0回答:1

我准备了一个多播客户端 - 服务器。它可以在同一台计算机上运行,​​但是当我使用两台不同的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)中更改端口

java server udp client multicast
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.