Java获取本地服务器IP,我们最简单的写法:
- import java.net.InetAddress;
- public class CatchIp{
- public static void main(String[] args)
- {
- try
- {
- // 获取IP地址
- String ip = InetAddress.getLocalHost().getHostAddress();
- System.out.println("IP地址:"+ip);
- }
- catch (Exception e)
- {
- System.out.println("异常:" + e);
- e.printStackTrace();
- }
- }
- }
但是这样有个问题,我们在windows系统,我们可以获取正确的IP
但是放在linux,可能是获取的IP地址为:127.0.0.1
而且在生产系统中,一台服务器可能有很多张网卡,这样获取ip比较麻烦,具体要了解生产系统服务器的IP地址我们可以参考这个网址:
http://blog.163.com/abkiss@126/blog/static/3259410020117493943770/?suggestedreading
代码如下:
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package org.lib.com;
- /**
- *
- * @author Administrator
- */
- 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());
- }
- }
- import java.net.InetAddress;
- public class CatchHostname{
- public static void main(String[] args)
- {
- try
- {
- // 获取计算机名
- String name = InetAddress.getLocalHost().getHostName();
- System.out.println("计算机名:"+name);
- }
- catch (Exception e)
- {
- System.out.println("异常:" + e);
- e.printStackTrace();
- }
- }
- }