gpt4 book ai didi

Java-SocketException : Not a multicast address

转载 作者:行者123 更新时间:2023-11-30 03:38:02 31 4
gpt4 key购买 nike

我的网络上有多个服务器,它们都发送广播消息。使用以下客户端,我 try catch 来自所有服务器的所有广播消息。发送部分工作正常(不包含在本文中),但我的接收部分不起作用...我不断收到“SocketException:不是多播地址”,我做错了什么?

public static String[] capture(int port) { // port is always 63332
ArrayList<String> clients = new ArrayList<>();

InetAddress address = Utilities.getBroadcastAddress(); // I get "/192.168.2.255" here

MulticastSocket socket = null;

try {
socket = new MulticastSocket(port);
socket.setSoTimeout(2000);
socket.joinGroup(address); // this part throws the exception

DatagramPacket packet;
byte[] packetContent;

while (true) {
packetContent = new byte[1024];
packet = new DatagramPacket(packetContent, packetContent.length);

try {
socket.receive(packet);

String client = packet.getAddress() + ":" + packet.getPort();

clients.add(client);
} catch (IOException e) {
e.printStackTrace();
}
}
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

if(socket != null) {
try {
socket.leaveGroup(address);
} catch(IOException e) {
e.printStackTrace();
}

socket.close();
}

return clients.toArray(new String[clients.size()]);
}

最佳答案

您混淆了广播和多播。多播地址不是广播地址。下定决心你正在做什么。如果您正在接收多播,则需要加入正确的多播地址,无论它是什么。如果您正在接收广播,请不要加入任何内容。

关于Java-SocketException : Not a multicast address,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27391218/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com