我正在Windows平台上开发Java程序。我想访问Wi-Fi接口详细信息,例如SSID,ip,子网,是否启用,是否连接等。目前,我正在尝试使用netsh,ipconfig命令。例如,这是我如何获取连接的SSID。这样好吗?有更好的简便方法吗?提前致谢。
这段代码可以在所有Windows版本中正常工作吗?
String ssid;
ProcessBuilder builder = new ProcessBuilder(
"cmd.exe", "/c", "netsh wlan show interfaces");
builder.redirectErrorStream(true);
Process p = builder.start();
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while (true) {
line = r.readLine();
if (line.contains("SSID")){
ssid = line.split("\\s+")[3];
System.out.println(ssid);
return ssid;
}
}
最佳答案
从Windows操作系统到Windows操作系统,NetSh.exe应用程序/命令中存在差异。
NetSh上的Microsoft命令行参考指出:“ WindowsServer®2003,WindowsServer®2008和WindowsServer®2008 R2上的netsh命令之间存在功能差异:”
这意味着XP,Vista和Windows 7之间存在差异。但是,仅因为存在更改并不意味着您就无法尝试测试要在App中使用的一些命令。我之所以这样说,是因为NetSh.exe具有非常丰富的功能,并且具有跨许多网络技术的许多子命令。
为了测试不同操作系统之间的差异,您可以使用脚本列出多个操作系统上的NetSh.exe帮助菜单,或在Microsoft网站上比较示例命令(在下面的链接中)。
RobVanderwoude有一个脚本,其中显示了NetSh的所有子命令。如果您进一步执行该脚本,则可以列出所有子命令示例并比较操作系统之间的结果。
尽管如此,您仍然必须在每个OS上手动测试该命令,或者向您信任的人确认某个命令在OS上有效。
NetSh.exe CLI参考:https://technet.microsoft.com/en-us/library/ee404790.aspx
NetSh帮助脚本:http://www.robvanderwoude.com/netsh.php