0

我是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地址?

4

3 回答 3

2

任何PC的MAC地址使用socket

简而言之,没有可靠的方法可以找出子网外主机的 MAC 地址。

如果您与相关主机位于同一子网中,请查看ARPRARP

于 2013-03-23T08:28:15.670 回答
1

MAC 地址仅用于本地网络。这是交换机/路由器知道必须将数据包发送到哪里的方式。IP 用于在网络之间传输数据包。

所有 TCP/UDP 数据包都包括发送方 IP 和 MAC。这样,接收设备可以将 MAC 包含在返回包中,以便交换机/路由器知道将其发送到哪里。MAC 地址应该是唯一的,但不能保证,并且不能用作 Internet 上的设备地址。

当您使用互联网时,您使用 IP 协议(​​全球地址系统)当您在本地网络上时,设备通常使用 MAC 地址。

于 2013-03-25T22:47:14.910 回答
-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);
于 2015-02-11T11:18:38.150 回答