转载自:
http://blog.sina.com.cn/s/blog_956a67ae010101tr.html
开始我在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;
-
}
-
-
-
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;
-
}
-
}
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29254281/viewspace-2109694/
,如需转载,请注明出处,否则将追究法律责任。