簡體   English   中英

如何在java套接字編程中不使用IP地址獲取MAC地址

[英]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地址?

使用套接字的任何PC的MAC ADDRESS

簡而言之,沒有可靠的方法來查找子網外主機的MAC地址。

如果您與相關主機位於同一子網,請查看ARPRARP

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM