And*_*ili 4 java networking ip-address
我在检索客户端的ip时遇到以下两个问题.
我在一个类中创建了以下代码:
private static InetAddress thisIp;
static{
try {
thisIp = InetAddress.getLocalHost();
System.out.println("MyIp is: " + thisIp);
} catch(UnknownHostException ex) {
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:
1)前面的代码应检索客户端的IP地址,当我执行它时,它会打印以下消息:
MyIp是:andrea-virtual-machine/127.0.1.1
为什么它以andrea-virtual-machine /开头?(我在虚拟机上开发),这是一个问题吗?
2)通过这种方式,我只能检索一个IP地址,但我可以拥有多个网卡,这样我就可以拥有多个IP地址但多个IP地址
我该怎么做才能处理这种情况?我想把所有多个IP地址放入ArrayList
TNX
安德里亚
不,这不是问题,它只是一个由主机名和IP(hostname/ip)组成的输出.您可能想要阅读的详细信息:实现toString()类中的方法InetAddress以返回此格式.
以下代码将列出系统中每个接口的所有IP地址(并将它们存储在您可以传递的列表中等等):
public static void main(String[] args) throws InterruptedException, IOException
{
List<String> allIps = new ArrayList<String>();
Enumeration<NetworkInterface> e = NetworkInterface.getNetworkInterfaces();
while (e.hasMoreElements())
{
NetworkInterface n = e.nextElement();
System.out.println(n.getName());
Enumeration<InetAddress> ee = n.getInetAddresses();
while (ee.hasMoreElements())
{
InetAddress i = ee.nextElement();
System.out.println(i.getHostAddress());
allIps.add(i.getHostAddress());
}
}
}
Run Code Online (Sandbox Code Playgroud)该方法boolean isLoopbackAddress()允许您过滤可能不需要的环回地址.
返回的InetAddress是a Inet4Address或a Inet6Address,使用instanceof你可以判断返回的IP是IPv4还是IPv6格式.
| 归档时间: |
|
| 查看次数: |
218 次 |
| 最近记录: |