在java中查找给定IP地址或MAC地址的计算机名称,操作系统名称

时间:2013-08-01 12:21:01

标签: java ip mac-address

有没有办法找到:

  1. 计算机名称
  2. 操作系统
  3. 硬件类型(笔记本电脑或台式机)
  4. 在java中提供IP或MAC地址。我一直在给一个任务 得到那些数据。我非常感谢代码示例或者您知道任何代码示例 可以使用的库。例如:

    如果我在同一网络上使用计算机的IP地址。我想知道计算机的名称以及它们正在使用的操作系统和其他硬件元数据(如果可能的话)。

3 个答案:

答案 0 :(得分:0)

import java.util.Map;

public class EnvMap {
    public static void main (String[] args) {
        Map<String, String> env = System.getenv();
        for (String envName : env.keySet()) {
            System.out.format("%s=%s%n",
                              envName,
                              env.get(envName));
        }
    }
}

我猜您需要以下属性:

COMPUTERNAME
OS

关于MAC地址和IP地址,您有两个选择:

使用

InetAddress ip;
  try {

    ip = InetAddress.getLocalHost();
    System.out.println("Current IP address : " + ip.getHostAddress());

  } catch (UnknownHostException e) {

    e.e.printStackTrace();

  } 

或使用ipconfig / ifconfig输出,但我会选择它给你

答案 1 :(得分:0)

获取mac

执行此操作的正确方法是使用ARP协议,但该协议位于Java不提供直接API访问权限的Data Link Layer。因此,您必须寻找一个好的解决方案。使用jNetPcap可以访问此内容。

获取计算机名称和操作系统

这需要您使用一些提供该数据的协议。 NBT提供此类数据。

答案 2 :(得分:0)

如果您正在尝试查找与IP地址关联的主机名,请使用InetAddress#getHostName(),但这只有在本地网络具有为反向DNS注册的主机时才有效。查找其他主机的操作系统需要您运行的服务告诉您或inference through fingerprinting,这是Java无法提供的,并且不完全可靠。