我正在使用代码来获取我的设备正在使用的 IPv4 地址:
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 "";
}
我的三星 Galaxy Express 已连接到 WiFi,并且有一张启用了手机的 sim 卡。
我从上面的代码中得到的 IP 是 10. 地址,这表明手机正在使用手机信号,当我需要它使用网络上可用的 192. 地址时。
有没有办法改变上面的代码来选择 192. 如果有的话?还是这手机有问题?
我试过禁用移动网络,进入飞行模式等。
唯一有效的方法是移除 sim 卡!!我不能指望用户这样做只是为了获得一个内部地址?
谢谢