繁体   English   中英

如何在java中获取wifi网络接口名称

[英]How to get the wifi network interface name in java

如何在java中确定wifi网络接口名称?

既然你说你在Android上开发使用这个:

WifiManager wifiManager = (WifiManager) this.getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
System.out.println(wifiInfo.getSSID());

这将返回您的WIFI的名称。

您必须将此权限添加到清单中。

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

你能说明吗? 您想要连接网络的SSID吗? 或者网络适配器的名称? 我提供了一个示例来获取所有网络接口的名称。

Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
while (networkInterfaces.hasMoreElements())
{
    NetworkInterface networkInterface = (NetworkInterface) networkInterfaces.nextElement();
    System.out.println(networkInterface.getDisplayName());
}

如果您只想选择WLAN接口,可能必须通过JNI执行此操作,否则您可以检查“wlan”的出现名称(如eth0,eth1等)。 我不建议仅依赖此命名约定。

Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
while (networkInterfaces.hasMoreElements())
{
    NetworkInterface networkInterface = (NetworkInterface) networkInterfaces.nextElement();
    if(networkInterface.getName().startsWith("wlan")) {
        System.out.println(networkInterface.getDisplayName());
    }
}

尝试:

NetworkInterface.getNetworkInterfaces();

这将返回您机器上的所有接口。

如果您正在使用Wi-Fi接口并且使用Wi-Fi接口,那么解析/ proc / net / wireless是继续使用Android的方法:

public static String getInterfaceName() {
    try
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("/proc/net/wireless")));

        // skip header
        reader.readLine();
        reader.readLine();

        // read first interesting line
        String ifLine = reader.readLine();
        reader.close();

        // extract interface name
        String ifName = ifLine.substring(0, ifLine.indexOf(':'));

        return ifName.trim();
    }
    catch(Exception e) {
        e.printStackTrace();
        return null;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM