wifi搜索连接到同一网络的设备i.d除了接入点(用于android)

时间:2011-12-09 13:09:46

标签: android android-wifi wifimanager

我想对我的项目进行修改,现在项目状态是...... 它搜索可用的WiFi网络,并显示包含网络信息的列表,这正常工作。现在我想搜索并查看连接到网络的设备的详细信息。 有没有办法找到这些设备? 您的评论对我有用,谢谢。

2 个答案:

答案 0 :(得分:11)

您可以遍历IP范围,并“ping”它们。 它不是最好/最快的方法(UDP更好),但它在许多情况下都有效。 下面的示例代码返回连接到当前网络的IP地址列表。

private int LoopCurrentIP = 0;

public ArrayList<InetAddress> getConnectedDevices(String YourPhoneIPAddress) {
    ArrayList<InetAddress> ret = new ArrayList<InetAddress>();

    LoopCurrentIP = 0;

    String IPAddress = "";
    String[] myIPArray = YourPhoneIPAddress.split("\\.");
    InetAddress currentPingAddr;

    for (int i = 0; i <= 255; i++) {
        try {

            // build the next IP address
            currentPingAddr = InetAddress.getByName(myIPArray[0] + "." +
                    myIPArray[1] + "." +
                    myIPArray[2] + "." +
                    Integer.toString(LoopCurrentIP));

            // 50ms Timeout for the "ping"
            if (currentPingAddr.isReachable(50)) {

                ret.add(currentPingAddr);
            }
        } catch (UnknownHostException ex) {
        } catch (IOException ex) {
        }

        LoopCurrentIP++;
    }
    return ret;
}

答案 1 :(得分:4)

您想发现一个特定的设备吗?或者您需要所有连接设备的列表?第二个我认为不可能。

修改

发现特定设备:
使用UDP Broadcast。可以找到一些参考here

某些设备(路由器,硬盘驱动器等)支持某些协议,例如UPNP

如果您在设备上开发了一个您想要发现的软件,则可以创建一个监听特定端口的UDP服务器。 您的客户只会在该端口发送broadcast消息,您的Server会发送包含您所需信息的回复。 Here这是一个简单的例子。