【问题标题】:Accessing Wi-Fi network interface details from Java using netsh使用 netsh 从 Java 访问 Wi-Fi 网络接口详细信息
【发布时间】:2015-11-07 06:21:19
【问题描述】:

我正在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;
    }
}

【问题讨论】:

  • 您的代码有效吗?如果是这样,你为什么要问这个问题?你一定有一些问题或疑问,否则你不会问。请在此处发布,以便人们可以回答。否则,您的问题太宽泛而无法回答。
  • 是的,这段代码有效。我希望像图书馆一样编写来访问所有与 WiFi 相关的属性。我想知道的是这段代码是否可以在所有 Windows 版本中正常工作?
  • 我投票结束这个问题,因为它可能更适合代码审查(寻求最佳方式)。

标签: java windows network-programming wifi netsh


【解决方案1】:

NetSh.exe App/Command 从 Windows 操作系统到 Windows 操作系统存在差异。

Microsoft Command-Line Reference on NetSh 指出“Windows Server® 2003、Windows Server® 2008 和 Windows Server® 2008 R2 上的 netsh 命令之间存在功能差异:”

这意味着在 XP、Vista 和 Windows 7 中存在差异。但是,仅仅因为有变化并不意味着您不能尝试测试您想在应用程序中使用的几个命令。我这样说是因为 NetSh.exe 拥有大量的功能,其中包含许多跨多种网络技术的子命令。

为了测试操作系统之间的差异,您可以使用脚本列出多个操作系统上的 NetSh.exe 帮助菜单或比较 Microsoft 网站上的示例命令(在下面的链接中)。

RobVanderwoude 有一个脚本,显示了 NetSh 的所有子命令。如果您将脚本更进一步,您可以列出所有子命令示例并比较操作系统之间的结果。

不过,您必须在每个操作系统上手动测试该命令,或者从您信任的人那里确认某个命令在操作系统上有效。

NetSh.exe CLI 参考:https://technet.microsoft.com/en-us/library/ee404790.aspx

NetSh 帮助脚本:http://www.robvanderwoude.com/netsh.php

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-08
    • 1970-01-01
    • 2018-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多