jgr*_*208 5 java ipv4 inetaddress network-interface
我编写了以下代码,以获取我在计算机上使用的eth0接口的IPv4地址。但是,fe80:x:x:x:xxx:xxxx:xxxx:xxxx
由于我正在查找IPv4地址,因此代码仅查找未返回的代码。
这是代码。
interfaceName = "eth0";
NetworkInterface networkInterface = NetworkInterface.getByName(interfaceName);
Enumeration<InetAddress> inetAddress = networkInterface.getInetAddresses();
InetAddress currentAddress;
currentAddress = inetAddress.nextElement();
while(inetAddress.hasMoreElements())
{
System.out.println(currentAddress);
if(currentAddress instanceof Inet4Address && !currentAddress.isLoopbackAddress())
{
ip = currentAddress.toString();
break;
}
currentAddress = inetAddress.nextElement();
}
Run Code Online (Sandbox Code Playgroud)
它弄乱了获取下一个元素的逻辑。inetAddress
在while
比较运行之前,我已经获取了下一个元素。从而使元素不再存在。
下面的代码已经修复了逻辑
interfaceName = "eth0";
NetworkInterface networkInterface = NetworkInterface.getByName(interfaceName);
Enumeration<InetAddress> inetAddress = networkInterface.getInetAddresses();
InetAddress currentAddress;
currentAddress = inetAddress.nextElement();
while(inetAddress.hasMoreElements())
{
currentAddress = inetAddress.nextElement();
if(currentAddress instanceof Inet4Address && !currentAddress.isLoopbackAddress())
{
ip = currentAddress.toString();
break;
}
}
Run Code Online (Sandbox Code Playgroud)