2011-11-08 126 views
4

我需要从PC获取MAC地址。我到目前为止写的代码在这里(这只是代码的一小部分)。获取远程PC的MAC地址?

public byte[] getMac(L2PcInstance player) 
{ 
    try 
    { 
     NetworkInterface ni = NetworkInterface.getByInetAddress(player.getClient().getConnectionAddress()); 
     if (ni != null) 
     { 
      byte[] mac = ni.getHardwareAddress(); 
      if (mac != null) 
      { 
       return mac; 
      } 
     } 
    } 
    catch (SocketException e) 
    { 
     _log.log(Level.SEVERE, "No MAC address.", e); 
    } 
    return null; 
} 

此代码找到我运行它的PC的MAC,但我需要获得远程MAC。

+0

:)。我编辑了我的问题。 thnx – JoinOG

+0

这不能像@EJP所说的那样远程完成。客户端可以发现这些信息,并可以通过套接字(或通过其他方式)将其发送到服务器,但是没有技术方法可以通过服务器远程执行此操作。顺便说一下,除非远程计算机位于相同的物理本地网络上,否则这些信息甚至不可用于内核。 – Gray

+0

是如何远程识别电脑的任何方式? – JoinOG

回答

6

你不能在Java中这样做,如果你做了一些研究,你会发现MAC地址对于除了以太网层和连接到它的NIC之外的任何东西都没有太多用处。

+0

你好,thnx为答案。我已经得到了托管服务器的PC的mac。所以我现在需要的是从远程PC获取MAC。即与我的服务器连接, – JoinOG

+0

@JoinOG MAC仅适用于相同的逻辑段 - 例如,如果通过路由器连接到另一台机器(例如,路由器P1 <-> P2),则只有路由器的MAC甚至可以使它到本地NIC ......通常有很多*不同的逻辑网段(不是所有的都是以太网!)从网上的一台机器到另一台机器:) – 2011-11-08 07:04:02

+0

是如何远程识别电脑的任何方式? – JoinOG