如何逐个遍历Java或Android中可用的IPv4网络地址列表?
[这是一个自行回答的问题]
答案 0 :(得分:0)
可能的解决方案如下:
private Enumeration<NetworkInterface> networkInterfaces = null;
private Enumeration<InetAddress> networkAddresses = null;
...
try
{
while(true)
{
if(this.networkInterfaces == null)
{
networkInterfaces = NetworkInterface.getNetworkInterfaces();
}
if(networkAddresses == null || !networkAddresses.hasMoreElements())
{
if(networkInterfaces.hasMoreElements())
{
NetworkInterface networkInterface = networkInterfaces.nextElement();
networkAddresses = networkInterface.getInetAddresses();
}
else
{
networkInterfaces = null;
}
}
else
{
if(networkAddresses.hasMoreElements())
{
String address = networkAddresses.nextElement().getHostAddress();
if(address.contains(".")) //IPv4 address
{
textView.setText(address);
}
break;
}
else
{
networkAddresses = null;
}
}
}
}
catch(SocketException e)
{
e.printStackTrace();
}
单击按钮,这会将显示的IP地址更改为网络接口上的下一个可用IP地址。这样,就可以一次显示一个IP地址。