【发布时间】:2014-02-26 14:59:33
【问题描述】:
以下是绑定到所有 ip 接口和特定 udp 端口的简单案例:
int bindPort = 5555; // example, udp port number
DatagramSocket socket = new DatagramSocket(bindPort);
byte[] receiveData = new byte[1500];
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
...
socket.receive(receivePacket);
我如何知道我在哪个 ip 接口上收到了数据包?
我可以看到有getSocketAddress():
获取SocketAddress(通常是IP地址+端口号) 此数据包正在发送到或来自的远程主机。
但返回远程 ip+port。我想知道本地ip(本例中本地端口为5555)。
std. 有可能吗? Java 库?
【问题讨论】:
-
我不明白,你已经知道了,因为你正在通过它。本地 IP 地址为 127.0.0.1。
-
本地IP地址不是总是127.0.0.1吗?
-
您对端口的看法是正确的,这很明显。但是本地地址可以是任何地址,因为我绑定到 0.0.0.0。明白了吗?
-
InetAddress IP=InetAddress.getLocalHost();System.out.println("IP of my system is := "+IP.getHostAddress());盗自stackoverflow.com/a/9481944/3224483