我正在开发一个应用程序,其中我需要的第一件事是如何获取连接到我的 wifi 网络或相同 wifi 网络的设备。即 IP 地址、设备名称等。 我不知道如何做到这一点,已经搜索了很多,但没有可用的示例。
我做了一件事,我将 ping 255 ips,无论哪个响应将是连接的 ips,但这里的问题是已经分配给某些网站的虚拟 ips,所以我只需要检测真实设备 ip 地址。
我想做与 WifiTalkie 应用程序中所做的相同的事情
遵循以下任意一项:
方式一:
如果您的意思是要查看连接到当前 WiFi 连接的所有设备(并且您不尝试进行 Ad Hoc 网络),那么您实际上是想运行网络扫描仪。
周围有很多这样的东西。这个在 github 上有源码
您可以循环 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;
}