DatagramSocket socket = new DatagramSocket(3000);
byte[] buffer = new byte[65536];
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
socket.receive(packet);
//packet.getDestAddress()我想要获取数据报到达的IP地址。我不知道。
发布于 2020-09-26 10:07:27
我认为解决这个问题的方法是改变
DatagramSocket socket = new DatagramSocket(3000);至
InetAddress localAddr = ...
DatagramSocket socket = new DatagramSocket(3000, localAddr);这样,您的套接字将绑定到特定的IP地址(而不是所有本地地址),并且它将只获得寻址到该IP地址的数据包。如果要接收发往多个地址的数据包地址并区分不同的IP地址,则可以为每个IP地址创建不同的DatagramSocket。
(处理多个套接字的复杂性可能会让您重新考虑是否真的需要知道传入数据报的目标IP。)
https://stackoverflow.com/questions/64072333
复制相似问题