以编程方式在android中获取连接到同一wifi网络的设备?

问题描述 投票:0回答:2

我正在开发一个应用程序,其中我需要的第一件事是如何获取连接到我的 wifi 网络或相同 wifi 网络的设备。即 IP 地址、设备名称等。 我不知道如何做到这一点,已经搜索了很多,但没有可用的示例。

我做了一件事,我将 ping 255 ips,无论哪个响应将是连接的 ips,但这里的问题是已经分配给某些网站的虚拟 ips,所以我只需要检测真实设备 ip 地址。

我想做与 WifiTalkie 应用程序中所做的相同的事情

java android wifi wifimanager network-interface
2个回答
1
投票

遵循以下任意一项:

方式一:

如果您的意思是要查看连接到当前 WiFi 连接的所有设备(并且您不尝试进行 Ad Hoc 网络),那么您实际上是想运行网络扫描仪。

周围有很多这样的东西。这个在 github 上有源码

http://rorist.github.com/android-network-discovery/

方式2: 请参阅如何从 Android 应用程序检测 WiFi 网络中连接的所有设备


0
投票

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

私有 int LoopCurrentIP = 0;

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

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;

}

© www.soinside.com 2019 - 2024. All rights reserved.