我准备了一个多播客户端服务器。它可以在同一台计算机上运行,但是当我使用两台不同的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)中更改端口
答案 0 :(得分:0)
似乎AP需要进行一些配置更改:应该启用IGMP(Internet组管理协议)。
某些AP不支持此功能(我的不支持),因此我不得不在其他网络中尝试。