1. 程式人生 > >Java 通過IP地址得到對應的主機名及MAC實體地址

Java 通過IP地址得到對應的主機名及MAC實體地址

package com.xu.test;

import java.io.BufferedInputStream;
import java.net.InetAddress;

public class Test {
	
	public static void main(String[] args) throws Exception {
		
		getHostName("123.123.123.123");
		
	}
	
	public static String getHostName(String ip)  throws Exception {
		//區域網內通過電腦的IP來得到MAC實體地址
		Process process;
		Runtime runtime=Runtime.getRuntime();
		String mac="";
		process=runtime.exec("arp -a "+ip);
		//呼叫Windows電腦的 CMD.EXE來檢視對應IP電腦的MAC實體地址
		BufferedInputStream macinputStream=(BufferedInputStream) process.getInputStream();
		byte [] macbt =new byte[1024];
		int len=0;
		StringBuffer macbuffer=new StringBuffer();
		while((len=macinputStream.read(macbt, 0,macbt.length))!=-1){
			macbuffer.append(new String(macbt, 0, len, "GBK"));
			//Java可能因為編碼的格式與我們編寫平臺的編碼集不同如果相同就可以不用更改
		}
		String[] macresult=macbuffer.toString().trim().split("\r\n");
		if(!macbuffer.toString().contains("未找到 ARP")){
			mac=macresult[2].substring(20, 40).trim();
		}
		System.out.println(mac);
		//通過IP來得到對應電腦的主機名字(hostname)
		InetAddress inetAddress=InetAddress.getByName(ip);
		return inetAddress.getHostName();
	}
	
}