[英]How to get MAC Address without using IP Address in java socket programming
我是Java中的套接字編程的新手。有人告訴我,如何在套接字編程中不使用IP地址獲取MAC地址。
這是我可以在socket中獲取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地址?
MAC地址僅用於本地網絡。 這是交換機/路由器知道數據包必須發送到何處的方式。 IP用於將數據包從網絡傳輸到網絡。
所有TCP / UDP數據包都包含發送方IP和MAC。 這樣,接收設備可以在返回包中包括MAC,以便交換機/路由器知道將其傳送到何處。 MAC地址應該是唯一的,但不能保證,並且不能在互聯網上用作設備地址。
使用Internet時,使用IP協議(全局地址系統)當您在本地網絡上時,設備通常使用MAC地址。
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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.