我有一个serverSocket,我想知道它的IP地址,但是
listenSocket.getInetAddress().toString();
我得到了0.0.0.0。 如何获取IP地址,或者(如果启用了两个连接)其中一个?
我有一个serverSocket,我想知道它的IP地址,但是
listenSocket.getInetAddress().toString();
我得到了0.0.0.0。 如何获取IP地址,或者(如果启用了两个连接)其中一个?
我过去曾经使用过这个:
public String getLocalIpAddress() {
try {
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress()) {
return inetAddress.getHostAddress();
}
}
}
} catch (SocketException ex) {
Log.e(LOG_TAG, ex.toString());
}
return null;
}
来源: http://www.droidnova.com/get-the-ip-address-of-your-device,304.html
如果你得到了0.0.0.0,那可能是因为你的监听套接字正在接受机器所有接口的连接。通常至少会有两个接口--一个用于与外界通信,另一个是本地主机/环回接口。因此,要求它的一个地址并不清晰。
一旦你接受了一个传入的连接,你可以询问它正在处理的特定接口的地址。
找到一个“好”的IP地址的快速技巧是建立一个出站连接到一个已知的站点,并在连接后请求其本地端的地址。这比枚举网络接口更具可移植性(如果你关心这些东西),但当然需要你有一个你信任的可以连接到并且保持活动和可达的目标。