Java IP地址,MAC地址返回,带有设备名称

时间:2016-04-10 05:48:46

标签: java networking network-programming

我正在尝试在android中编码以返回所有设备的名称及其在wifi上的IP。我在如何解决这个问题上遇到了麻烦。所有在线示例仅返回localhost及其信息。即

 try {
            InetAddress localhost = InetAddress.getLocalHost();
            System.out.println(" IP Addr: " + localhost.getHostAddress());
            // Just in case this host has multiple IP addresses....
            InetAddress[] allMyIps = InetAddress.getAllByName(localhost.getCanonicalHostName());
            if (allMyIps != null && allMyIps.length > 1) {
                System.out.println(" Full list of IP addresses:");
                for (int i = 0; i < allMyIps.length; i++) {
                    System.out.println("    " + allMyIps[i]);
                }
            }
        } catch (UnknownHostException e) {
            System.out.println(" (error retrieving server host name)");
        }

        try {
            System.out.println("Full list of Network Interfaces:");
            for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) {
                NetworkInterface intf = en.nextElement();
                System.out.println("    " + intf.getName() + " " + intf.getDisplayName());
                for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) {
                    System.out.println("        " + enumIpAddr.nextElement().toString());
                }
            }
        } catch (SocketException e) {
            System.out.println(" (error retrieving network interface list)");
        }

这不一定是我想要的,因为我想要返回wifi上的所有设备。

我不知道怎么回事。 请帮帮忙,谢谢!

1 个答案:

答案 0 :(得分:0)

WifiManager 此类提供用于管理Wi-Fi连接各个方面的主要API。通过调用Context.getSystemService(Context.WIFI_SERVICE)获取此类的实例。它涉及几类物品:

  1. 已配置网络的列表。可以查看和更新​​列表,并可以修改各个条目的属性。

  2. 当前有效的Wi-Fi网络(如果有)。可以建立或拆除连接,并可以查询有关网络状态的动态信息。

  3. 接入点扫描的结果,包含足够的信息来决定要连接的接入点。

  4. 它定义了在Wi-Fi状态发生任何变化时广播的各种Intent动作的名称。

  5. WifiInfo 描述任何处于活动状态或正在设置的Wifi连接的状态。

    示例:

    WifiManager wifiMgr = (WifiManager) getSystemService(WIFI_SERVICE);
    WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
    int ip = wifiInfo.getIpAddress();
    String ipAddress = Formatter.formatIpAddress(ip);
    String macAddress = wifiInfo.getMacAddress();
    

    确保您已使用以下内容修改了清单:

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

    <强>来源:
    1. WifiManager
    2. WifiInfo API