运行命令" cmd ipconfig /all"就会出现以下结果
Physical Address. . . . . . . . . : 20-CF-30-9A-60-EE
。
java就能过这样的命令来获取。以下是示例。
import java.io.BufferedReader
import java.io.IOException
import java.io.InputStreamReader
public class TestMac
{
public static void main(String[] args) {
System.out.println("Operation System=" + getOsName())
System.out.println("Mac Address=" + getMACAddress())
System.out.println("通过ip获取mac"+getMACAddress("192.168.1.101"))
}
public static String getOsName() {
String os = ""
os = System.getProperty("os.name")
return os
}
public static String getMACAddress() {
String address = ""
String os = getOsName()
if (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()))
String line
while ((line = br.readLine()) != null) {
if (line.indexOf("Physical Address") >0) {
int index = line.indexOf(":")
index += 2
address = line.substring(index)
break
}
}
br.close()
return address.trim()
} catch (IOException e) {
}
} else if (os.startsWith("Linux")) {
String command = "/bin/sh -c ifconfig -a"
Process p
try {
p = Runtime.getRuntime().exec(command)
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()))
String line
while ((line = br.readLine()) != null) {
if (line.indexOf("HWaddr") >0) {
int index = line.indexOf("HWaddr") + "HWaddr".length()
address = line.substring(index)
break
}
}
br.close()
} catch (IOException e) {
}
}
address = address.trim()
return address
}
public static String getMACAddress(String ipAddress) {
String str = "", strMAC = "", macAddress = ""
try {
Process pp = Runtime.getRuntime().exec("nbtstat -a " + ipAddress)
InputStreamReader ir = new InputStreamReader(pp.getInputStream())
LineNumberReader input = new LineNumberReader(ir)
for (int i = 1i <100i++) {
str = input.readLine()
if (str != null) {
if (str.indexOf("MAC Address") >1) {
strMAC = str.substring(str.indexOf("MAC Address") + 14,
str.length())
break
}
}
}
} catch (IOException ex) {
return "Can't Get MAC Address!"
}
//
if (strMAC.length() <17) {
return "Error!"
}
macAddress = strMAC.substring(0, 2) + ":" + strMAC.substring(3, 5)
+ ":" + strMAC.substring(6, 8) + ":" + strMAC.substring(9, 11)
+ ":" + strMAC.substring(12, 14) + ":"
+ strMAC.substring(15, 17)
//
return macAddress
}
}
剑天梦的回答原理和我这个一样,都是通过Process 执行命令。 我直接补充到答案里了。不过
我这边运行那个命令出来的结果很多,那么花的时间就长了。优点是能够获取别人的mac地址 。
Macbookpro比较适合java开发,java开发推荐千锋教育,千锋教育现已拥有成熟独立的项目库,项目均1:1引进大厂项目,授课采用 CREA 项目研发模型,即 Cooperation、Research、Exercise、Alliance,以项目促进高质量教学。Java 是几乎所有类型的网络应用程序的基础,也是开发和提供嵌入式和移动应用程序、游戏、基于 Web 的内容和企业软件的全球标准。Java 在全球各地有超过 900 万的开发人员,使您能够高效地开发、部署和使用精彩的应用程序和服务。从笔记本电脑到数据中心,从游戏控制台到科学超级计算机,从手机到互联网,Java 无处不在.
想要了解更多Java开发的相关信息,推荐咨询千锋教育。千锋企合作部整合大量企业客户资源,紧抓当下企业需求,将技术和项目完美结合千锋课程体系,力求培养更多优质人才服务企业,不断提升学员竞争力,链接企业用人标准的培训课程及实战项目,让企业招聘用人的技术要求与千锋学员的技术充分对接。