Android ,获取用户ip地址
Android , get user ip address
我正在使用以下方法获取客户端 ip:
public static String getIPAddress(boolean useIPv4) {
try {
List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
for (NetworkInterface intf : interfaces) {
List<InetAddress> addrs = Collections.list(intf.getInetAddresses());
for (InetAddress addr : addrs) {
if (!addr.isLoopbackAddress()) {
String sAddr = addr.getHostAddress().toUpperCase();
boolean isIPv4 = InetAddressUtils.isIPv4Address(sAddr);
if (useIPv4) {
if (isIPv4)
return sAddr;
} else {
if (!isIPv4) {
int delim = sAddr.indexOf('%'); // drop ip6 port suffix
return delim<0 ? sAddr : sAddr.substring(0, delim);
}
}
}
}
}
} catch (Exception ex) { } // for now eat exceptions
return "";
}
在我的套接字测试中,我的 Genymotion 模拟器的状态栏上有“192.168.56.101”,我可以 运行 一个套接字并连接到它,它工作正常,
但是在同一个模拟器中,当我运行这个方法获取ip时,它会return"10.0.3.15",因为它必须return"192.168.56.101 ".
不知道哪里来的这种怪事!!! ("10.0.3.15")
我怎样才能得到真正的用户 Ip 地址,我想通过套接字连接两个人,所以我想我必须有他们的 Ip 才能连接他们,或者,这是更好的方法吗?
这对我有用:
WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE);
String ip = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
而 10.0.3.15 是 Geneymotion 中的本地主机地址。
我正在使用以下方法获取客户端 ip:
public static String getIPAddress(boolean useIPv4) {
try {
List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
for (NetworkInterface intf : interfaces) {
List<InetAddress> addrs = Collections.list(intf.getInetAddresses());
for (InetAddress addr : addrs) {
if (!addr.isLoopbackAddress()) {
String sAddr = addr.getHostAddress().toUpperCase();
boolean isIPv4 = InetAddressUtils.isIPv4Address(sAddr);
if (useIPv4) {
if (isIPv4)
return sAddr;
} else {
if (!isIPv4) {
int delim = sAddr.indexOf('%'); // drop ip6 port suffix
return delim<0 ? sAddr : sAddr.substring(0, delim);
}
}
}
}
}
} catch (Exception ex) { } // for now eat exceptions
return "";
}
在我的套接字测试中,我的 Genymotion 模拟器的状态栏上有“192.168.56.101”,我可以 运行 一个套接字并连接到它,它工作正常,
但是在同一个模拟器中,当我运行这个方法获取ip时,它会return"10.0.3.15",因为它必须return"192.168.56.101 ".
不知道哪里来的这种怪事!!! ("10.0.3.15")
我怎样才能得到真正的用户 Ip 地址,我想通过套接字连接两个人,所以我想我必须有他们的 Ip 才能连接他们,或者,这是更好的方法吗?
这对我有用:
WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE);
String ip = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
而 10.0.3.15 是 Geneymotion 中的本地主机地址。