`
董瑞龙
  • 浏览: 107074 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

Java 获取本机IP

阅读更多

开始我在Linux下用InetAddress.getLocalHost()方法获取本机IP地址,
得到的结果总是:127.0.1.1。
原来这个是etc/hosts文件中的配置,并非网卡的IP地址。
后来多方寻访,终于得下以下代码,
运行后在控制台输出IP与


开始我在Linux下用InetAddress.getLocalHost()方法获取本机IP地址,
得到的结果总是:127.0.1.1。
原来这个是etc/hosts文件中的配置,并非网卡的IP地址。
后来多方寻访,终于得下以下代码,
运行后在控制台输出IP与MAC地址。
import java.net.*;
import java.util.*;
public class getIP {
   public static void main(String[] args) {
   getIP t = new getIP();
   System.out.println(t.getLocalIP());
   System.out.println(t.getMacAddr());
   }
   public String getMacAddr() {  
       String MacAddr = "";
       String str = "";
       try {
           NetworkInterface NIC = NetworkInterface.getByName("eth0");
           byte[] buf = NIC.getHardwareAddress();
           for (int i = 0; i < buf.length; i++) {
               str = str + byteHEX(buf[i]);
           }
           MacAddr = str.toUpperCase();
       } catch (SocketException e) {
           e.printStackTrace();
           System.exit(-1);
       }
       return MacAddr;
   }
   public String getLocalIP() {
       String ip = "";
       try {
           Enumeration<?> e1 = (Enumeration<?>) NetworkInterface.getNetworkInterfaces();
           while (e1.hasMoreElements()) {
               NetworkInterface ni = (NetworkInterface) e1.nextElement();
               if (!ni.getName().equals("eth0")) {
                   continue;
               } else {
                   Enumeration<?> e2 = ni.getInetAddresses();
                   while (e2.hasMoreElements()) {
                       InetAddress ia = (InetAddress) e2.nextElement();
                       if (ia instanceof Inet6Address)
                           continue;
                       ip = ia.getHostAddress();
                   }
                   break;
               }
           }
       } catch (SocketException e) {
           e.printStackTrace();
           System.exit(-1);
       }
       return ip;
   }
/* 一个将字节转化为十六进制ASSIC码的函数 */
   public static String byteHEX(byte ib) {
       char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a','b', 'c', 'd', 'e', 'f' };
       char[] ob = new char[2];
       ob[0] = Digit[(ib >>> 4) & 0X0F];
       ob[1] = Digit[ib & 0X0F];
       String s = new String(ob);
       return s;
   }
}

在Windows下获得硬件地址,windows 7 测试可用:

import java.net.*;
import java.util.*;

public class GetIP
{
    public static void main (String[] args)
    {
        GetIP t = new GetIP ();
        //System.out.println (t.getLocalIP ());
        System.out.println (t.getMacAddr ());
    }

    public String getMacAddr ()
    {
        String MacAddr = "";
        String str = "";
        try
        {
            Enumeration <NetworkInterface> em = NetworkInterface.getNetworkInterfaces ();
            while (em.hasMoreElements ())
            {
                NetworkInterface nic = em.nextElement ();
                //System.out.println ("nic.getDisplayName ():" + nic.getDisplayName ());
                //System.out.println ("nic.getName ():" + nic.getName ());
                byte[] b = nic.getHardwareAddress ();
                if (b == null)
                {
                    continue;
                }
                for (int i = 0; i < b.length; i++)
                {
                    System.out.print (byteHEX(b[i])+"-");
                }
                System.out.println ();
            }
        }
        catch (SocketException e)
        {
            e.printStackTrace ();
            System.exit (-1);
        }
        return MacAddr;
    }

    public  String getLocalIP ()
    {
        String ip = "";
        try
        {
            Enumeration <?> e1 = (Enumeration <?>) NetworkInterface.getNetworkInterfaces ();
            while (e1.hasMoreElements ())
            {
                NetworkInterface ni = (NetworkInterface) e1.nextElement ();
                Enumeration <?> e2 = ni.getInetAddresses ();
                while (e2.hasMoreElements ())
                {
                    InetAddress ia = (InetAddress) e2.nextElement ();
                    ip = ia.getHostAddress ();
                }
            }
        }
        catch (SocketException e)
        {
            e.printStackTrace ();
            System.exit (-1);
        }
        return ip;
    }

    /* 一个将字节转化为十六进制ASSIC码的函数 */
    public static String byteHEX (byte ib)
    {
        char[] Digit =
        { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
        char[] ob = new char[2];
        ob[0] = Digit[(ib >>> 4) & 0X0F];
        ob[1] = Digit[ib & 0X0F];
        String s = new String (ob);
        return s;
    }
}
 

 

分享到:
评论

相关推荐

    java获取本机IP地址

    在Java编程中,获取本机IP地址是一项常见的任务,它涉及到网络编程的基础知识。本机IP地址是指设备连接到网络时所使用的唯一标识符。在Java中,有多种方法可以获取本机IP地址,但主要涉及到`java.net`包中的类和方法...

    Java获得本机IP自动上传ftp

    在Java编程中,实现“Java获得本机IP自动上传ftp”的功能涉及到两个主要部分:获取本机IP地址和使用FTP(File Transfer Protocol)协议进行文件上传。以下将详细阐述这两个部分的知识点。 首先,让我们来看看如何...

    java获取本机IP

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

    JAVA发送邮件和获取ip地址

    在Java编程中,发送邮件和获取IP地址是两个常见的任务,尤其在系统集成、通知服务或者数据通信中。下面将详细讲解这两个知识点。 首先,让我们来看看如何使用Java发送邮件。在Java中,我们通常使用JavaMail API来...

    java获取公网IP

    总结来说,Java获取公网IP地址主要依赖于网络请求和第三方服务的配合。`ExternalIpAddressFetcher.java` 类提供了一个简单的方法来实现这个功能,通过向Amazon AWS提供的公共IP检查服务发起HTTP请求,并解析返回的IP...

    java程序 获取ip某个主机地址 获得本机的ip地址

    java程序 获取ip某个主机地址 获得本机的ip地址 java程序 获取ip某个主机地址 获得本机的ip地址

    java获取本机外网ip

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

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

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

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

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

    Java获取本机MAC地址IP地址主机名

    Java获取本机MAC地址IP地址主机名

    Java取本机IP地址

    非常清楚的介绍了如何使用Java获取本机IP地址,有源码

    Java 自动获取本机IP、MAC地址

    Java 自动获取本机IP和MAC地址是一项常见的需求,在网络编程和系统管理中经常会用到。这个小工具利用了Java的网络和系统API,能够帮助用户便捷地查看本机的网络配置信息。以下是对相关知识点的详细说明: 1. **Java...

    获取本机IP地址的代码

    在IT行业中,获取本机IP地址是一项常见的任务,特别是在网络编程和系统管理中。IP地址是互联网协议(Internet Protocol)中的标识符,用于区分网络上的设备。本机IP地址指的是设备连接到网络时所使用的地址。以下是...

    java 获取客户端ip mac地址

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

    Java获取客户端真实IP地址

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

    java获取当前主机的外网ip

    java获取当前主机的外网ip,简单方便。

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

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

    java 获取计算机名与IP地址

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

    idea,java获取ip地址

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

Global site tag (gtag.js) - Google Analytics