多个具有UDP ReuseAdAddress true的Java DatagramSocket实例
我对以下两个项目有兴趣:多个具有UDP ReuseAdAddress true的Java DatagramSocket实例,java,udp,Java,Udp,我对以下两个项目有兴趣: 服务器: final DatagramSocket datagramSocket = new DatagramSocket(null); datagramSocket.setReuseAddress(true); datagramSocket.bind(new InetSocketAddress(12345)); System.out.println(datagramSocket.getReuseAddress()); // returns true final
final DatagramSocket datagramSocket = new DatagramSocket(null);
datagramSocket.setReuseAddress(true);
datagramSocket.bind(new InetSocketAddress(12345));
System.out.println(datagramSocket.getReuseAddress()); // returns true
final byte[] buffer = new byte[4];
final DatagramPacket datagramPacket = new DatagramPacket(buffer, buffer.length);
datagramSocket.receive(datagramPacket);
System.out.println(new String(buffer));
datagramSocket.close();
final byte[] data = "Test".getBytes();
final DatagramSocket datagramSocket = new DatagramSocket(null);
final DatagramPacket datagramPacket
= new DatagramPacket(data, data.length, InetAddress.getByName("localhost"), 12345);
datagramSocket.send(datagramPacket);
datagramSocket.close();
我的代码中是否存在错误,或者我对UDP重用的理解中是否存在错误 为什么??你期待什么样的行为?如果您想要广播,请使用广播。或者多播。这表明这是不可能的:只有设置SO_REUSEADDR选项(托管代码中的SocketOptionName.ReuseAddress)套接字才能共享同一IP地址上的端口,即使这样,行为也是不确定的(通常,一个或另一个套接字将接收数据报,但不是两者都接收)。我理解,对于单播消息,这是不可能的,但只适用于多播消息(我试过了,它可以工作)。非常感谢。正确的答案在评论中