【问题标题】:Current connection info - Java当前连接信息 - Java
【发布时间】:2012-09-09 12:08:37
【问题描述】:

我试图让我的程序显示 ipconfig 命令在 Windows 中显示的内容。我已设法获取主机名和 IPv4 地址,如何获取 IPv6 地址和子网掩码?到目前为止,我尝试了各种方法都无济于事。我的代码是:

try {
    InetAddress addr = InetAddress.getLocalHost();
    String ipAddr = addr.getHostAddress();
    String hostname = addr.getHostName();
    gsc.mainWindow.printf("Host name: ",hostname,"\n");
    gsc.mainWindow.printf("IP Address: ",ipAddr,"\n");
} catch (Exception e) {
    gsc.mainWindow.printf("Error: ",e,"\n");
}

考虑gsc.mainWindow我打印任何类型对象的输出流。提前致谢!

(PS.如果有人能添加一些我想不到的标签,我将不胜感激!)

【问题讨论】:

标签: java network-programming ipv6 subnet inetaddress


【解决方案1】:

如果您想要 所有 ipconfig 提供给我们的信息,我认为您无法通过 java.net 包获得它。如果您要查找的只是 IPv6 和 IPv4 地址,那么您可以使用 java.net.Inet6Address.getHostAddress()

如果您想要其他信息,例如 DHCP、默认网关、DNS,那么最好的办法是从 java 调用 ipconfig 并捕获输出。此 hack 是特定于操作系统的,因此您还可以包含一些代码以在执行前检查操作系统。

String os = System.getProperty("os.name");        
try {
    if(os.indexOf("Windows 7")>=0) {
       Process process = Runtime.getRuntime().exec("ipconfig /all");
       process.waitFor();
       InputStream commandOut= process.getInputStream();
       //Display the output of the ipconfig command
       BufferedReader in = new BufferedReader(new InputStreamReader(commandOut));
       String line;
       while((line = in.readLine()) !=null) 
          System.out.println(line);
    }
}
catch(IOException ioe) {    }
catch(java.lang.InterruptedException utoh) {   }        
}

如果您只想显示这些信息的一部分,那么您可以在 while 循环中放置一些代码来查找诸如“主机名”或“物理地址”之类的内容,并且只显示包含这些字符串的行。

【讨论】:

    猜你喜欢
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多