我是Java中的套接字编程新手。有人告诉我,如何在套接字编程中不使用IP地址获取MAC地址。
这是我可以在套接字中获取MAC地址的代码 -
NetworkInterface network = NetworkInterface.getByInetAddress(ip);
byte[] mac = network.getHardwareAddress();
System.out.print("Current MAC address : ");
StringBuilder sb = new StringBuilder();
for (int i = 0; i < mac.length; i++) {
sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "- " : ""));
}
System.out.println(sb.toString());
但这最终是使用IP地址。有没有办法在不使用IP地址的情况下获取MAC地址?
答案 0 :(得分:2)
答案 1 :(得分:1)
MAC地址仅用于本地网络。这是交换机/路由器知道数据包必须发送到何处的方式。 IP用于将数据包从网络传输到网络。
所有TCP / UDP数据包都包含发件人IP和MAC。这样,接收设备可以在返回包中包括MAC,以便交换机/路由器知道将其传送到何处。 MAC地址应该是唯一的,但不能保证,并且不能在互联网上用作设备地址。
当您使用互联网时,您使用IP协议(全球地址系统) 当您在本地网络上时,设备通常使用MAC地址。
答案 2 :(得分:-1)
try{
InetAddress ip = InetAddress.getLocalHost();
System.out.println("ip : " + ip);NetworkInterface network = NetworkInterface.getByInetAddress(ip);
byte[] mac = network.getHardwareAddress();
System.out.print("Current MAC address : ");
StringBuilder sb = new StringBuilder();
for (int i = 0; i < mac.length; i++) {
sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""));
}
System.out.println(sb.toString());
String s=sb.toString();System.out.println(s);