【发布时间】:2014-10-19 14:41:48
【问题描述】:
如何逐一遍历Java或Android中可用的IPv4网络地址列表?
[这是一个自我回答的问题]
【问题讨论】:
标签: java android sockets networking ip
如何逐一遍历Java或Android中可用的IPv4网络地址列表?
[这是一个自我回答的问题]
【问题讨论】:
标签: java android sockets networking ip
可能的解决方案如下:
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 地址。
【讨论】: