`
Kaza
  • 浏览: 17378 次
  • 性别: 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(swing界面版)

    纯JAVA实现修改本地IP地址(swing界面版),支持存储多个预设IP,可以切换使用(IO流实现),支持删除。

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

    JAVA工具获取本地IP

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

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

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

    自己制作的JAVA制作的多线程的可用端口扫描。运用了java的swing组件,利用多线程加快扫描速度。功能:获得本地IP,扫描可用端口。 含有两个文件,(main)主类文件,线程类文件。

    获取本地IP地址的小程序

    java写的获取本地IP地址的小程序,附有源代码 大家一起学习 一起进步 如有更好的方法 请留言 谢谢

    java获取访问者的IP地址

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

    获取电脑ip通过java代码

    java代码获取本地ip 一个分装好的小的工具类

    java 获取用户ip

    获取访问者ip地址,123456789012345678901234567890123456789

    java实现免费代理IP的获取方式 并实时校验代理IP是否有效

    Java 实现免费代理IP的获取方式 并动态实时校验是否有效,java文件项目内含有Jsoup的Jar包(Jsoup是加工过的,含请求),有2个主入口程序: 其一:用于请求代理IP,并立即校验是否是一个有效的代理IP,如果有效,...

    IP地址HTTP请求工具类

    获取本地IP地址,获取本地Host名称,获取Linux下的IP地址,获取用户真实IP地址,get/post请求 相应的工具类

    Java怎么获取多网卡本地ip

    java获取本地ip,获取多网卡本地ip在项目中经常会用到,下面小编把代码分享到脚本之家平台,供大家参考

    java获取本地网络连接信息

    使用java技术获取本地网络连接信息的简单代码:包括网卡信息,IP地址,物理地址,默认网关,子网掩码以及DNS等信息

    java根据本地IP获取mac地址的方法

    主要为大家详细介绍了java根据本地IP获取mac地址的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    java实现读取html网页文件

    可以读取任何html网页的内容,适用于读取网页内容保存到数据库字段中

    【Java】通过ip地址获取详细地域信息(不通过API使用本地库)-调用库

    这是调用库,关于使用方法,可以参考:https://blog.csdn.net/hj7jay/article/details/95060600

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

    主要介绍了基于Java实现获取本地IP地址和主机名,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    利用IP138网站获得本机外网IP地址

    2:针对网上的其它实例增加实时更新IP地址功能,防止断网重连后IP地址显示不正确 3:增加一条命令,用来解决MSXML2.XMLHTTP和Microsoft.XMLHTTP老是读旧缓存导致IP地址无论如何刷新都无变化的问题 4:代码里都有详细...

    java获取外网IP和省市区,抓取方式

    你遇到过本地IP192.168.0.1但你想取到自己的外网IP或自己的省市区吗?这些统统都不是事,是事也就烦一会,下载下来执行main方法便可获取到位置和IP。带解析JAR包,最权威最给力的最最最最权威的方法。市面上绝对没有...

    JAVA小程序取得IP地址

    由于JAVA语言的跨平台特性,以上程序编译后可直接在任何装有JVM系统...以上程序旨在抛砖引玉,读者可将上述代码稍加变换转化成APPLET加到你的homepage中,或将地址查询结果写到一个文件中去,建立自己本地的hosts文件。

Global site tag (gtag.js) - Google Analytics