Java UDP-如何获取传入数据报的目标地址

Java UDP-如何获取传入数据报的目标地址,java,android,udp,Java,Android,Udp,我想得到数据报的IP地址。 我不知道。我认为解决这个问题的方法是改变 DatagramSocket socket = new DatagramSocket(3000); byte[] buffer = new byte[65536]; DatagramPacket packet = new DatagramPacket(buffer, buffer.length); socket.receive(packet); //packet.getDestAddress() 到 这样,您的套接字将绑定到

我想得到数据报的IP地址。
我不知道。我认为解决这个问题的方法是改变

DatagramSocket socket = new DatagramSocket(3000);
byte[] buffer = new byte[65536];
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
socket.receive(packet);
//packet.getDestAddress()

这样,您的套接字将绑定到一个特定的IP地址(而不是所有的本地地址),并且它将只获取指向该IP地址的数据包。如果要接收多个地址的数据包地址并区分不同的IP地址,可以为每个IP地址创建一个不同的
DatagramSocket


(处理多个套接字的复杂性可能会让您重新考虑是否真的需要知道传入数据报的目标IP。)

您不应该已经知道您的IP地址吗?@NomadMaker-几乎每台计算机都有多个IP地址。在琐碎的意义上;e、 g.环回。通常在非琐碎的意义上也是如此;e、 g.具有多个物理NIC或虚拟网络接口的计算机。getInetAddress()或getLocalAddress()如何?@NomadMaker您还没有理解这个问题。当主机有多个IP地址时,可以通过其中任何一个地址接收数据报,了解数据报的地址可能会很有意义。这与这些API返回的单个IP地址或主机名不同。UDP数据报的目标地址在Java中不可用。我正在向所有网络广播消息,希望拒绝我的数据包。我希望使用Wi-Fi或AP而不直接与它们交互(不知道它们的IP)。您应该能够根据数据包>>的来源过滤数据包
DatagramSocket socket = new DatagramSocket(3000);
InetAddress localAddr = ...
DatagramSocket socket = new DatagramSocket(3000, localAddr);