先看一段代码:the IP address of the local host. 在大多数机器上都可以取到本机ip
InetAddress.getLocalHost().getHostAddress()
但是多网卡配置的时候,就悲剧了:下图这个机器使用上面的命令取回的是127.0.0.1。
用ifconfig看网卡:
这个时候就需要枚举多网卡判断了
Enumeration<NetworkInterface> netInterfaces = NetworkInterface.getNetworkInterfaces();
然后结合IP4的地址段做区分,主要利用以下两个方法:
ip.isSiteLocalAddress() && !ip.isLoopbackAddress()
最终方法如下(从网上copy来的..)
/**
* 多IP处理,可以得到最终ip
* @return
*/
public static String getIp() {
String localip = null;// 本地IP,如果没有配置外网IP则返回它
String netip = null;// 外网IP
try {
Enumeration<NetworkInterface> netInterfaces = NetworkInterface
.getNetworkInterfaces();
InetAddress ip = null;
boolean finded = false;// 是否找到外网IP
while (netInterfaces.hasMoreElements() && !finded) {
NetworkInterface ni = netInterfaces.nextElement();
Enumeration<InetAddress> address = ni.getInetAddresses();
while (address.hasMoreElements()) {
ip = address.nextElement();
// System.out.println(ni.getName() + ";" + ip.getHostAddress()
// + ";ip.isSiteLocalAddress()="
// + ip.isSiteLocalAddress()
// + ";ip.isLoopbackAddress()="
// + ip.isLoopbackAddress());
if (!ip.isSiteLocalAddress() && !ip.isLoopbackAddress()
&& ip.getHostAddress().indexOf(":") == -1) {// 外网IP
netip = ip.getHostAddress();
finded = true;
break;
} else if (ip.isSiteLocalAddress()
&& !ip.isLoopbackAddress()
&& ip.getHostAddress().indexOf(":") == -1) {// 内网IP
localip = ip.getHostAddress();
}
}
}
} catch (SocketException e) {
e.printStackTrace();
}
if (netip != null && !"".equals(netip)) {
return netip;
} else {
return localip;
}
}
- 大小: 10.1 KB
分享到:
相关推荐
非常清楚的介绍了如何使用Java获取本机IP地址,有源码
在Java编程中,获取本机IP地址是一项常见的需求,特别是在网络编程中。`InetAddress.getLocalHost()` 是Java中用于获取本地主机名和IP地址的方法,但在某些情况下,它可能返回的是环回地址(如127.0.0.1或127.0.1.1...
在本文中,我们将深入探讨如何使用Java编程语言创建一个Swing界面应用,该应用能够修改本地计算机的IP地址。这个程序允许用户存储多个预设IP地址,并方便地在它们之间切换,同时也支持删除不需要的IP配置。我们将会...
在Java编程环境中,获取本机的IP地址和MAC地址是一项常见的需求,特别是在网络通信和设备识别的场景下。本文将详细讲解如何通过Java代码来获取本机正在使用的IP地址(包括IPv4和IPv6)以及MAC地址,并排除虚拟机的IP...
这个IP地址是动态的,也可能固定不变,取决于ISP的服务类型。要获取这个公网IP,我们可以通过向特定的HTTP服务发起请求,这些服务会返回请求发出的公网IP。 在Java中,我们可以创建一个类来实现这个功能。例如,`...
通过url链接到一个网址,该网址返回自己的ip地址(通过代理服务器访问)
Java获取本机MAC地址IP地址主机名
Java ip 地址排序Java ip 地址排序Java ip 地址排序Java ip 地址排序
在Java编程中,获取IP地址是一项常见的任务,特别是在网络编程和服务器开发中。这个"java IP地址工具类"是为了解决这个问题而设计的。它提供了便捷的方法来获取和处理IP地址,尤其对于获取客户端IP地址在Web应用中至...
Java IP地址网段计算的示例代码 Java IP地址网段计算是网络编程中的一个重要概念,它可以帮助开发者计算出某个IP地址的网段信息,包括网段的起始IP、结束IP和子网掩码等。在Java语言中,可以使用各种算法和技巧来...
在Java编程中,获取本机和服务器的IP地址是一项常见的任务,这有助于建立网络连接、进行定位服务或者进行网络通信。下面将详细解释如何通过Java实现这个功能。 首先,我们需要了解IP地址的基本概念。IP地址...
在Java编程语言中,获取计算机名和IP地址是常见的网络编程任务。这主要涉及到Java的`java.net`包,该包提供了多种类和接口来处理网络相关的操作。下面将详细介绍如何使用Java获取计算机名和IP地址。 首先,我们来看...
### Java获取客户端真实IP地址详解 在Web开发中,获取客户端的真实IP地址是一个常见的需求,尤其是在需要进行地理位置定位、安全审计、流量统计等场景下。然而,在存在反向代理服务器的环境中,传统的`request....
java获取当前主机的外网ip,简单方便。
### Java 获取客户端 IP 地址 在 Web 开发中,获取客户端 IP 地址是一项非常重要的功能,尤其是在需要记录用户活动、实现地理位置定位...以上就是关于如何在 Java 中获取客户端 IP 地址及 MAC 地址的相关知识点介绍。
本文将围绕“Java常用IP匹配”这一主题,深入探讨IP地址的基本概念、正则表达式在IP匹配中的应用,以及如何利用Java内置库进行IP地址的验证与解析。 ### IP地址基础 IP地址(Internet Protocol Address)是互联网...
在IT领域,网络通信是不可或缺的一部分,而获取本机的IP地址和主机名则是网络通信的基础。本篇文章将深入探讨如何在不同的操作系统和编程语言环境下实现这一功能。 首先,主机名是一个标识符,用于在网络中唯一标识...
在Java编程中,判断一个IP地址是内网IP(私有IP)还是公网IP(全局IP)是一项常见的任务,尤其在网络编程和服务器配置中。内网IP通常用于局域网内部通信,而公网IP则是互联网上的唯一标识。下面将详细探讨如何实现这...
在本篇文章中,我们将深入探讨如何使用Java语言来获取IP地址。这是一项在网络编程中非常基础且重要的技能,能够帮助开发者了解客户端或服务器的网络位置信息。以下是对给定文件中的代码进行的详细解析。 #### 标题...
在Java编程中,我们有时需要获取一个IP地址所对应的具体地理位置,例如省份、城市等信息。这通常需要借助特定的IP数据库,如“纯真IP数据库”(QQWry.Dat),它包含了大量IP地址及其地理位置的映射关系。本文将详细...