有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

网络查找JAVA中的WIFI状态

在我的java应用程序中,我想看看wifi处于什么状态(例如1巴、2巴或没有wifi)

我想知道如何才能在原生Java中找到计算机的wifi状态,或者使用乒乓球应用程序,或者是否必须将wifi状态直接解析到应用程序

任何帮助都将不胜感激

另外,我没有使用安卓系统


共 (1) 个答案

  1. # 1 楼答案

    如果你想覆盖Windows平台,那么你可以使用以下方法:

    public int getWirelessStrength() {
        // The returned integer value is in relation to strength percent.
        // If 75 is returned then the wireless signal strength is at 75%.
        List<String> list = new ArrayList<>();
        int signalStrength = 0;
        String cmd = "netsh wlan show interfaces"; 
        try {
            Process p = Runtime.getRuntime().exec("cmd /c " + cmd);
            p.waitFor();
            try (BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()))) {
                String line;
                while ((line = reader.readLine()) != null) {
                    list.add(line);
                }
            }
            if (p.isAlive()) { p.destroy(); }
    
            // Get the Signal Strength.
            for (int i = 0; i < list.size(); i++) {
                if (list.get(i).trim().toLowerCase().startsWith("signal")) {
                    String[] ss = list.get(i).split(":");
                    if(ss.length == 2) {
                        signalStrength = Integer.parseInt(ss[1].replace("%","").trim());
                    }
                    break;
                }
            }
        }
        catch (IOException | InterruptedException ex) { 
            Logger.getLogger("getWirelessStrength()").log(Level.SEVERE, null, ex);
        }
        return signalStrength;
    }
    

    上述方法利用Windows Netsh Command-line Utility获取所需信息。返回的整数结果是信号强度的百分比,因此,如果返回75,则WiFi信号强度为75%。如果您想为Unix或Linux做类似的事情,那么可以使用iwlistiwconfig命令,并以类似的方式解析出所需的信号强度。对于MAC,我相信你需要使用Airport Utility