gpt4 book ai didi

java - 当前连接信息 - Java

转载 作者:太空宇宙 更新时间:2023-11-04 08:04:13 24 4
gpt4 key购买 nike

我试图让我的程序显示 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");
}

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

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

最佳答案

如果您想要 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 循环内放置一些代码来查找“主机名”或“物理地址”等内容,并仅显示包含这些字符串的行。

关于java - 当前连接信息 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12338931/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com