博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于获取本机IP
阅读量:2399 次
发布时间:2019-05-10

本文共 2548 字,大约阅读时间需要 8 分钟。

 都是网上搜集的,具体出处不详

获取所有IP      在WIN下可行

  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代码一   此代码在LIUNX下可能会只能取到127.0.0.1  未在LINUX下试过,在WIN下可行

 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;  
   } 

获取本机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;
    }
}

转载地址:http://vcjob.baihongyu.com/

你可能感兴趣的文章
动态 iptables 防火墙(转)
查看>>
中文《linux 新手管理员手册》下载(转)
查看>>
Linux之强大---不用win的N大理由 (LinuxSir上近30页的精彩讨论)(转)
查看>>
php调用mysql存储过程和函数的方法(转)
查看>>
Unix编程/应用问答中文版 ---14.一些小工具的使用 15.32-bit/64-bit相关问题(转)
查看>>
硬盘数据毁尸灭迹的方法(转)
查看>>
Oracle SQL语言(转)
查看>>
ORA-01003: no statement parsed 网上解决篇(转)
查看>>
一個用Perl分析Apache Log的簡單程序(转)
查看>>
ORACLE物理文件大小的限制(转)
查看>>
Perl程序与c程序速度的比较(转)
查看>>
perl常问问题集--第七篇(转)
查看>>
对拥有一个几十万行表的MySQL性能优化的简单办法(转)
查看>>
PERL对象编程基础(转)
查看>>
RedHat 8.0提供ADSL共享上网的解决办法[(转)
查看>>
本地调试PERL CGI程序(转)
查看>>
cron辅助squid(转)
查看>>
全文本检索的应用(1)(转)
查看>>
全文本检索的应用(2)(转)
查看>>
数据库学习:在数据库中存取文件(转)
查看>>