本机IP与物理地址

来源:互联网 发布:java多泛型转换 编辑:程序博客网 时间:2024/05/17 03:42
 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Inet6Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;

public class TestAddr {

 /**
  * 获取本机所有IP
  */
 private static String[] getAllLocalHostIP() {
  List<String> res = new ArrayList<String>();
  Enumeration netInterfaces;
  try {
   netInterfaces = NetworkInterface.getNetworkInterfaces();
   InetAddress ip = null;
   while (netInterfaces.hasMoreElements()) {
    NetworkInterface ni = (NetworkInterface) netInterfaces
      .nextElement();
    System.out.println("---Name---:" + ni.getName());
    Enumeration nii = ni.getInetAddresses();
    while (nii.hasMoreElements()) {
     ip = (InetAddress) nii.nextElement();
     if (ip.getHostAddress().indexOf(":") == -1) {
      res.add(ip.getHostAddress());
      System.out.println("本机的ip=" + ip.getHostAddress());
     }
    }
   }
  } catch (SocketException e) {
   e.printStackTrace();
  }
  return (String[]) res.toArray(new String[0]);
 }

 public static String getLocalIP() {
  String ip = "";
  try {
   Enumeration<?> e1 = (Enumeration<?>) NetworkInterface
     .getNetworkInterfaces();
   while (e1.hasMoreElements()) {
    NetworkInterface ni = (NetworkInterface) e1.nextElement();
    System.out.println("getLocalIP--nic.getDisplayName ():"
      + ni.getDisplayName());
    System.out
      .println("getLocalIP--nic.getName ():" + ni.getName());
    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;
 }

 public static String getWinLocalIP() {
  String ip = "";
  try {
   Enumeration<?> e1 = (Enumeration<?>) NetworkInterface
     .getNetworkInterfaces();
   while (e1.hasMoreElements()) {
    NetworkInterface ni = (NetworkInterface) e1.nextElement();
    System.out.println("getWinLocalIP--nic.getDisplayName ():"
      + ni.getDisplayName());
    System.out.println("getWinLocalIP--nic.getName ():"
      + ni.getName());
    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;
 }

 /**
  * 获取本机所有物理地址
  *
  * @return
  */
 public static String getMacAddress() {
  String mac = "";
  String line = "";

  String os = System.getProperty("os.name");

  if (os != null && os.startsWith("Windows")) {
   try {
    String command = "cmd.exe /c ipconfig /all";
    Process p = Runtime.getRuntime().exec(command);

    BufferedReader br = new BufferedReader(new InputStreamReader(p
      .getInputStream()));

    while ((line = br.readLine()) != null) {
     if (line.indexOf("Physical Address") > 0) {
      int index = line.indexOf(":") + 2;

      mac = line.substring(index);

      break;
     }
    }

    br.close();

   } catch (IOException e) {
   }
  }

  return mac;
 }

 public String getMacAddress(String host) {
  String mac = "";
  StringBuffer sb = new StringBuffer();

  try {
   NetworkInterface ni = NetworkInterface.getByInetAddress(InetAddress
     .getByName(host));

   // byte[] macs = ni.getHardwareAddress();

   // for (int i = 0; i < macs.length; i++) {
   // mac = Integer.toHexString(macs[i] & 0xFF);
   //
   // if (mac.length() == 1) {
   // mac = '0' + mac;
   // }
   //
   // sb.append(mac + "-");
   // }

  } catch (SocketException e) {
   e.printStackTrace();
  } catch (UnknownHostException e) {
   e.printStackTrace();
  }

  mac = sb.toString();
  mac = mac.substring(0, mac.length() - 1);

  return mac;
 }

 /**
  * @param args
  */
 public static void main(String[] args) {
  TestAddr.getAllLocalHostIP();
  System.out.println("LocalIP:" + TestAddr.getLocalIP());
  System.out.println("getWinLocalIP:" + TestAddr.getWinLocalIP());
  System.out.println(TestAddr.getMacAddress());
 }

}

原创粉丝点击