java獲取ip地址和mac地址

livedba發表於2011-12-29
java獲取ip地址和mac地址[@more@]

/**
* @param paramHttpServletRequest
* @param paramHttpServletResponse
* @return
* @方法說明 獲取ip地址
* @date 2011-12-26
* @author 孫偉
*/
public static String getReqIP(HttpServletRequest paramHttpServletRequest, HttpServletResponse paramHttpServletResponse) {
String str = paramHttpServletRequest.getHeader("x-forwarded-for");
if ((str == null) || (str.length() == 0) || ("unknown".equalsIgnoreCase(str)))
str = paramHttpServletRequest.getHeader("Proxy-Client-IP");
if ((str == null) || (str.length() == 0) || ("unknown".equalsIgnoreCase(str)))
str = paramHttpServletRequest.getHeader("WL-Proxy-Client-IP");
if ((str == null) || (str.length() == 0) || ("unknown".equalsIgnoreCase(str)))
str = paramHttpServletRequest.getRemoteAddr();
return str;
}

/**
* @param ip
* @return
* @throws IOException
* @方法說明 獲取Mac地址
* @date 2011-12-28
* @author 孫偉
*/
public static String getMacAddress(String ip) throws IOException {
String headIp = ip.substring(0, 3);
if(headIp.equalsIgnoreCase("0:0")||headIp.equalsIgnoreCase("127")){
return "";
}
byte[] t_ns = new byte[50];
t_ns[0] = 0x00;
t_ns[1] = 0x00;
t_ns[2] = 0x00;
t_ns[3] = 0x10;
t_ns[4] = 0x00;
t_ns[5] = 0x01;
t_ns[6] = 0x00;
t_ns[7] = 0x00;
t_ns[8] = 0x00;
t_ns[9] = 0x00;
t_ns[10] = 0x00;
t_ns[11] = 0x00;
t_ns[12] = 0x20;
t_ns[13] = 0x43;
t_ns[14] = 0x4B;

for (int i = 15; i < 45; i++) {
t_ns[i] = 0x41;
}

t_ns[45] = 0x00;
t_ns[46] = 0x00;
t_ns[47] = 0x21;
t_ns[48] = 0x00;
t_ns[49] = 0x01;

int iRemotePort=137;
byte[] buffer = new byte[1024];
DatagramSocket ds=new DatagramSocket();

DatagramPacket dpk = new DatagramPacket(t_ns, t_ns.length, InetAddress.getByName(ip), iRemotePort);
ds.send(dpk);




DatagramPacket dp = new DatagramPacket(buffer, buffer.length);
ds.receive(dp);

byte[] brevdata = dp.getData();
int i = brevdata[56] * 18 + 56;
String sAddr = "";
StringBuffer sb = new StringBuffer(17);

for (int j = 1; j < 7; j++) {
sAddr = Integer.toHexString(0xFF & brevdata[i + j]);
if (sAddr.length() < 2) {
sb.append(0);
}
sb.append(sAddr.toUpperCase());
if (j < 6)
sb.append(':');
}


try {
ds.close();
} catch (Exception ex) {
ex.printStackTrace();
}
return sb.toString();
/*String str = "";
String macAddress = "";
try {
Process pro = Runtime.getRuntime().exec("nbtstat -A " + ip);
InputStreamReader ir = new InputStreamReader(pro.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
for (int i = 1; i < 100; i++) {
str = input.readLine();
if (str != null) {
if (str.indexOf("MAC Address") > 1) {
macAddress = str.substring(str.indexOf("MAC Address") + 14, str.length());
break;
}
}
}
} catch (IOException e) {
}
return macAddress;*/
}

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25261409/viewspace-1056973/,如需轉載,請註明出處,否則將追究法律責任。

相關文章