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

时间:2010-12-22 09:06:10

标签: java networking network-programming wifi

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

4 个答案:

答案 0 :(得分:3)

既然你说你在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" />

答案 1 :(得分:1)

你能说明吗?您想要连接网络的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());
    }
}

答案 2 :(得分:0)

尝试:

NetworkInterface.getNetworkInterfaces();

将返回您计算机上的所有接口。

答案 3 :(得分:-1)

如果您正在使用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;
    }
}