`
Kaza
  • 浏览: 17506 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

用java获取本地ip

阅读更多
通常,我们都是用以下代码来获取本地ip地址的
InetAddress.getLocalHost().getHostAddress()

这种方法在linux却只能取到127.0.0.1这个让人无奈的地址。。。这简直是让人不能忍受的啊。。。这种地址不用获取,我们谁不知道。。。
在网上搜索了很多,发现说这个问题的并不多,所以,我把找到的一段代码分享给大家。。。当然这段代码需要jdk1.5以上版本
Enumeration<NetworkInterface> netInterfaces = null;
try {
	netInterfaces = NetworkInterface.getNetworkInterfaces();
	while (netInterfaces.hasMoreElements()) {
		NetworkInterface ni = netInterfaces.nextElement();
		System.out.println("DisplayName:" + ni.getDisplayName());
		System.out.println("Name:" + ni.getName());
		Enumeration<InetAddress> ips = ni.getInetAddresses();
		while (ips.hasMoreElements()) {
			System.out.println("IP:"
			+ ips.nextElement().getHostAddress());
		}
	}
} catch (Exception e) {
	e.printStackTrace();
}

这段代码会输出计算机中所有设备的ip,找需要的用吧,呵呵
分享到:
评论
9 楼 Feiing 2008-05-18  
楼上  人家都说了是获取本地 IP 了  你贴个 getRemoteAddr() 干啥
8 楼 wushaoen 2008-05-17  
/**
* @see javax.servlet.ServletRequestWrapper#getRemoteAddr()
*/
public String getRemoteAddr()
{
// We look if the request is forwarded
// If it is not call the older function.
        String ip = super.getHeader("x-forwarded-for");
       
        if (ip == null) {
        ip = super.getRemoteAddr();
        }
        else {
        // Process the IP to keep the last IP (real ip of the computer on the net)
            StringTokenizer tokenizer = new StringTokenizer(ip, ",");

            // Ignore all tokens, except the last one
            for (int i = 0; i < tokenizer.countTokens() -1 ; i++) {
            tokenizer.nextElement();
            }
           
            ip = tokenizer.nextToken().trim();
           
            if (ip.equals("")) {
            ip = null;
            }
        }
       
        // If the ip is still null, we put 0.0.0.0 to avoid null values
        if (ip == null) {
        ip = "0.0.0.0";
        }
       
        return ip;
}

7 楼 Feiing 2008-05-13  
public abstract class IPUtils {
	
	private static Log logger = LogFactory.getLog(IPUtils.class);
	
	public static Collection<InetAddress> getAllHostAddress() {
		try {
			Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
			Collection<InetAddress> addresses = new ArrayList<InetAddress>();
			
			while (networkInterfaces.hasMoreElements()) {
				NetworkInterface networkInterface = networkInterfaces.nextElement();
				Enumeration<InetAddress> inetAddresses = networkInterface.getInetAddresses();
				while (inetAddresses.hasMoreElements()) {
					InetAddress inetAddress = inetAddresses.nextElement();
					addresses.add(inetAddress);
				}
			}
			
			return addresses;
		} catch (SocketException e) {
			throw new RuntimeException(e.getMessage(), e);
		}
	}
	
	public static Collection<String> getAllNoLoopbackAddresses() {
		Collection<String> noLoopbackAddresses = new ArrayList<String>();
		Collection<InetAddress> allInetAddresses = getAllHostAddress();
		
		for (InetAddress address : allInetAddresses) {
			if (!address.isLoopbackAddress()) {
				noLoopbackAddresses.add(address.getHostAddress());
			}
		}
		
		return noLoopbackAddresses;
	}
	
	public static String getFirstNoLoopbackAddress() {
		Collection<String> allNoLoopbackAddresses = getAllNoLoopbackAddresses();
		Assert.isTrue(!allNoLoopbackAddresses.isEmpty(), " Sorry, seems you don't have a network card :( ");
		return allNoLoopbackAddresses.iterator().next();
	}
}	
6 楼 wangxuliangboy 2008-05-13  
Process proc=Runtime.getRuntime().exec("ping "+ip +" -w 300 -n 1");
//通过调用系统的PING命令,来获得局域网IP
BufferedReader read=new BufferedReader(new InputStreamReader(proc.getInputStream()));
String str="";
for (int i = 0; i < 7; i++)
str=read.readLine();
if(str.length()<17 || str.indexOf("timed out")!=-1){
//map.put(ip, new Boolean(false));
}else{
InetAddress addr=InetAddress.getByName(ip);
map.put(addr.getHostName(),ip);
}
5 楼 Hunk.Chen 2008-05-08  
ServletActionContext.getRequest().getLocalAddr();
ServletActionContext.getRequest().getLocalName();
ServletActionContext.getRequest().getLocalPort();
或者
String serverIP = ServletActionContext.getRequest().getServerName();
int serverPort = ServletActionContext.getRequest().getServerPort();

4 楼 cdphantom 2008-03-18  
引用
Java代码


  
引用
1. 如何获取外网的IP??? 
3 楼 tiyi 2008-03-16  
saturn 写道
如何获取外网的IP???

连接一个外部网站,对返回的数据中解析出IP内容。
当然目标网站是一个汇报client IP地址的网页。

否则你再怎么枚举也枚举不到外网IP,如果你处在防火墙内
2 楼 saturn 2008-03-16  
如何获取外网的IP???
1 楼 waitmannee 2008-03-10  
public String getLocalIP(){
InetAddress addr = null;
		try {
			addr = InetAddress.getLocalHost();
		} catch (UnknownHostException e) {
			e.printStackTrace();
                        return null;
		}
		byte[] ipAddr = addr.getAddress();
		String ipAddrStr = "";
		for (int i = 0; i < ipAddr.length; i++) {
			if (i > 0) {
				ipAddrStr += ".";
			}
			ipAddrStr += ipAddr[i] & 0xFF;
		}
		//System.out.println(ipAddrStr);
                return ipAddrStr;
}

相关推荐

    java IP地址工具类,java IP地址获取,java获取客户端IP地址

    在Java编程中,获取IP地址是一项常见的任务,特别是在网络编程和服务器开发中。这个"java IP地址工具类"是为了解决这个问题而设计的。它提供了便捷的方法来获取和处理IP地址,尤其对于获取客户端IP地址在Web应用中至...

    java 获取客户端ip mac地址

    这段代码首先尝试获取本地主机的IP地址,然后遍历所有网络接口来查找主网卡(例如`eth0`)的IP地址。 ### 结论 在实际开发中,获取客户端的IP地址是常见的需求,而获取MAC地址则较为罕见且可能存在一定的法律风险...

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

    总结起来,"纯JAVA实现修改本地IP(swing界面版)"项目涉及到了Java编程、Swing GUI设计、IP地址处理、文件I/O、事件处理、多线程以及错误处理等多个核心知识点。通过这个项目,开发者不仅可以提升Java编程技能,也能...

    getlocalIp_获取本地IP工具java_服务器_

    在Java编程环境中,获取本地IP地址是一个常见的需求,特别是在服务器端开发中,这可能涉及到网络通信、服务定位等多种场景。以下是一些关于如何在Java中获取本地IP的关键知识点: 1. **网络接口(Network Interface...

    获取本地IP地址的小程序

    在Java中,我们可以使用内置的`java.net`包来处理与网络相关的操作,包括获取本地IP。 标题中的"获取本地IP地址的小程序",通常是指获取本机连接到网络时的IP地址。这可能包括局域网IP和公网IP。在Java中,我们可以...

    JAVA多线程本地IP端口扫描器

    本项目"JAVA多线程本地IP端口扫描器"是利用Java的强大功能来实现的一种实用工具,它可以帮助我们快速地检测本地计算机的开放端口,这对于网络安全检查、系统调试和性能优化都有重要意义。下面我们将深入探讨这个项目...

    用Java来获取访问者真实的IP地址

    ### 使用Java获取访问者真实IP地址 在现代Web开发中,获取客户端的真实IP地址是非常重要的。这不仅有助于网站统计分析,还可以用于安全控制、地域限制等功能。然而,在使用如Apache、Squid等反向代理服务器的情况下...

    Java获取客户端IP及Mac地址(同网段).rar

    如果使用了反向代理软件,用request.getRemoteAddr()方法获取的IP地址是:127.0.0.1或192.168.1.110,而并不是客户端的真实IP。所以我们这里添加了条件验证,将客户端IP及Mac地址(同网段)与本地本地IP及Mac地址...

    java 获取计算机名与IP地址

    下面将详细介绍如何使用Java获取计算机名和IP地址。 首先,我们来看如何获取计算机名。计算机名通常指的是主机在网络中的标识符,可以通过`java.lang`包中的`InetAddress`类来获取。以下是一个简单的示例: ```...

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

    在本文中,我们将详细介绍Java获取Linux服务器上的IP操作,包括Linux服务器上的网络接口、回环接口、获取IP地址的方法等。 Linux服务器上的网络接口 在Linux服务器上,网络接口是用来发送和接受数据包的基本设备...

    JAVA发送邮件和获取ip地址

    获取本地或远程主机的IP地址可以通过`java.net`包中的类来实现。 1. 获取本地IP地址: ```java import java.net.InetAddress; import java.net.UnknownHostException; public class IPAddress { public ...

    java编程实现获取服务器IP地址及MAC地址的方法

    以下是一个简单的示例方法,用于获取本地服务器的IP地址: ```java public static String getLocalIP() { String sIP = ""; InetAddress ip = null; try { boolean bFindIP = false; Enumeration...

    java非常强的获取客户端真实IP的两种方法

    ### Java获取客户端真实IP的两种方法详解 #### 一、问题背景 在Web开发中,经常需要获取客户端的真实IP地址来进行一系列的操作,比如统计访问来源、进行地理定位、安全防护等。然而,在实际应用场景中,客户端请求...

    JAVA获取别人的ip地址

    ### JAVA获取别人IP地址的方法与实现 #### 一、引言 在开发网络应用程序时,经常需要获取客户端的IP地址。这不仅可以用于日志记录、统计分析,还可以用于某些安全控制措施,例如限制某些IP访问服务等。本文将详细...

    java获取ip地址返回地区

    总结,Java获取IP地址并返回国家、地区和城市名称的过程主要包括:获取IP地址、加载QQwry数据库、查询IP信息以及解析查询结果。通过这个过程,开发者可以为网络应用程序增加更丰富的地理定位功能。不过需要注意,这...

    idea,java获取ip地址

    当我们构建一个基于Servlet的Web应用程序时,有时需要获取访问用户的真实IP地址,这在处理用户请求、日志记录或者实现地理位置相关的功能时尤为关键。 Servlet是Java服务器端的一种组件,它扩展了Web服务器的功能,...

    java 获取用户ip

    获取访问者ip地址,123456789012345678901234567890123456789

    java获取访问者的IP地址

    java获取访问者的IP地址,适用于web开发。注意:如果是本地测试的话,通过localhost访问的时候ip显示为0:0:0:0:0:0:0:1,这代表的是本地,可以将localhost换成127.0.0.1时,显示的是当前访问的ip地址

    基于Java实现获取本地IP地址和主机名

    "基于Java实现获取本地IP地址和主机名" 在Java编程中,获取本地IP地址和主机名是一个常见的需求。本文将详细介绍基于Java实现获取本地IP地址和主机名的两种方式,并对每种方式进行了详细的解释和示例代码。 方式一...

    java根据IP获取城市代码

    总之,通过Java获取IP地址对应的城市代码涉及了数据库查询、网络请求等多个技术点。在实际开发中,我们需要根据项目需求、性能要求和成本考虑选择合适的实现方式。对于大型项目,可能会结合使用本地数据库和服务提供...

Global site tag (gtag.js) - Google Analytics