`
sw1982
  • 浏览: 516143 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

关于JAVA取本机ip的一些传说

阅读更多

 

先看一段代码: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地址,有源码

    纯JAVA实现修改本地IP(swing界面版)

    在本文中,我们将深入探讨如何使用Java编程语言创建一个Swing界面应用,该应用能够修改本地计算机的IP地址。这个程序允许用户存储多个预设IP地址,并方便地在它们之间切换,同时也支持删除不需要的IP配置。我们将会...

    java获取本机外网ip

    通过url链接到一个网址,该网址返回自己的ip地址(通过代理服务器访问)

    java正则表达式验证IP地址

    Java正则表达式验证IP地址 Java正则表达式验证IP地址是指使用Java语言中的正则表达式来验证IP地址是否符合标准。IP地址是指在网络通信中用来标识设备的地址,它是一种逻辑地址,通过它可以找到网络中的设备。在...

    java获取本机IP

    在Java编程中,获取本机IP地址是一项常见的任务,特别是在网络通信和服务器开发中。本文将详细介绍如何在Java中获取本机IP,并针对不同操作系统可能出现的问题进行解析。 首先,最简单的方法是使用`InetAddress`类...

    java获取linux服务器上的IP操作

    然而,在Linux服务器上获取IP地址却存在一些问题。在本文中,我们将详细介绍Java获取Linux服务器上的IP操作,包括Linux服务器上的网络接口、回环接口、获取IP地址的方法等。 Linux服务器上的网络接口 在Linux...

    用Java编程获得本机和服务器IP地址

    在Java编程中,获取本机和服务器的IP地址是一项常见的任务,这有助于建立网络连接、进行定位服务或者进行网络通信。下面将详细解释如何通过Java实现这个功能。 首先,我们需要了解IP地址的基本概念。IP地址...

    java IP地址网段计算的示例代码

    Java IP地址网段计算的示例代码 Java IP地址网段计算是网络编程中的一个重要概念,它可以帮助开发者计算出某个IP地址的网段信息,包括网段的起始IP、结束IP和子网掩码等。在Java语言中,可以使用各种算法和技巧来...

    java根据ip反查省市县地址

    在Java编程中,根据IP地址反查对应的省市县地址是一项常见的需求,这通常涉及到网络编程和地理信息系统(GIS)的应用。下面将详细讲解如何利用Java实现这一功能。 首先,我们需要理解IP地址的基本概念。IP地址是由...

    java 获取计算机名与IP地址

    在Java编程语言中,获取计算机名和IP地址是常见的网络编程任务。这主要涉及到Java的`java.net`包,该包提供了多种类和接口来处理网络相关的操作。下面将详细介绍如何使用Java获取计算机名和IP地址。 首先,我们来看...

    IP工具类,通过传入的request获取ip地址(JAVA)

    本篇文章将详细解释如何在Java环境下,通过Servlet和Reactive编程模型来获取HTTP请求中的IP地址。 首先,让我们从Servlet API开始。Servlet是Java用于构建动态Web应用程序的标准接口。在Servlet中,我们通常使用`...

    java得到本机外网IP类

    平易近人.只需要调用一下getOutNetIP方法就可以得到本机的外网IP地址 。还等什么那少年.快下载吧..哥的其他原创资源也是不错的噢哈哈

    Java获取客户端真实IP地址

    ### Java获取客户端真实IP地址详解 在Web开发中,获取客户端的真实IP地址是一个常见的需求,尤其是在需要进行地理位置定位、安全审计、流量统计等场景下。然而,在存在反向代理服务器的环境中,传统的`request....

    java获取客户端ip及mac地址

    ### Java 获取客户端 IP 地址 在 Web 开发中,获取客户端 IP 地址是一项非常重要的功能,尤其是在需要记录用户活动、实现地理位置定位...以上就是关于如何在 Java 中获取客户端 IP 地址及 MAC 地址的相关知识点介绍。

    java判断是内网ip还是公网ip

    在Java编程中,判断一个IP地址是内网IP(私有IP)还是公网IP(全局IP)是一项常见的任务,尤其在网络编程和服务器配置中。内网IP通常用于局域网内部通信,而公网IP则是互联网上的唯一标识。下面将详细探讨如何实现这...

    java常用ip匹配

    本文将围绕“Java常用IP匹配”这一主题,深入探讨IP地址的基本概念、正则表达式在IP匹配中的应用,以及如何利用Java内置库进行IP地址的验证与解析。 ### IP地址基础 IP地址(Internet Protocol Address)是互联网...

    java 获取客户端ip mac地址

    在Java Web开发中,有时我们需要获取客户端的IP地址甚至是MAC地址,以便进行安全验证、用户行为追踪等操作。本文将详细介绍如何通过Java来实现这一功能。 #### 一、获取客户端 IP 地址 获取客户端的IP地址通常在...

    ip地址管理器用java语言实现

    本项目名为“IP地址管理器”,采用Java语言进行实现,主要关注于IP地址的过滤、开通和关闭功能。这涉及到网络编程、数据结构、多线程以及可能的数据库操作等多个知识点。 首先,我们需要理解IP地址的基本概念。IP...

    java根据ip获取国家、地区名称,附带ip地址库

    在Java编程中,根据IP地址获取国家和地区名称是一项常见的需求,尤其在数据分析、网络监控或者用户定位等场景中。这个话题涉及到的主要知识点包括IP地址处理、数据库查询以及使用第三方库。 首先,IP地址是一个32位...

    获取本机IP和主机名方法

    在IT领域,网络通信是不可或缺的一部分,而获取本机的IP地址和主机名则是网络通信的基础。本篇文章将深入探讨如何在不同的操作系统和编程语言环境下实现这一功能。 首先,主机名是一个标识符,用于在网络中唯一标识...

Global site tag (gtag.js) - Google Analytics