当前位置: 首页 > 知识库问答 >
问题:

使用Android编程检测连接到我的wifi路由器的所有设备

夏侯航
2023-03-14

我试图在Android中建立一个应用程序,它需要连接到wifi路由器(我的本地路由器)的所有设备(PC和其他移动设备)的IP地址。IP地址是路由器使用DHCP分配给设备的地址。此外,我试图建立的应用程序将是本地设备连接到同一个路由器。我在网上到处寻找可以实现这一点的Android代码,但我只找到了如何扫描wifi接入点。使用Android编程,我正在尝试做的事情可能吗?

共有3个答案

仉明知
2023-03-14

您可以通过以下方式使用 arp 缓存表来执行此操作:

        BufferedReader br = null;
        ArrayList<String[]> ipCache = new ArrayList<>(3);
        try {
            br = new BufferedReader(new FileReader("/proc/net/arp"));
            String line;
            while ((line = br.readLine()) != null) {
                String[] split = line.split(" +");
                if (split.length >= 4 ) {
                    if(!split[0].equals("IP") &&!split[0].equals(ROUTER_IP) ){
                        ipCache.add(split);
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        int ipsPonged = ipCache.size();
        if(ipsPonged>0){
            for (String[] client :
                    ipCache) {
                // if one ping test succeeds we are fine
                if(!ping(client[0])){
                    ipsPonged--;
                }
            }
            if(ipsPonged == 0){
                return true;
            }
        }else{
            return false;
        }
强安和
2023-03-14

这完全取决于您的路由器:它是否通过API或其他方式公开了此类功能。大多数路由器不允许这种深度查询。如果您想对其进行更多控制,您可以使用tomato或dd-rowt。

公孙英飙
2023-03-14

没有直接的 API。它不像wifi路由器给每个人一个它分配的所有IP的列表。您可以尝试pingwifi网络上的每个IP(您可以通过网络掩码知道这些IP是什么),但这只有在设备配置为返回ICMP数据包并且路由器不阻止它们时才有效。

可能适用于你的应用的是 Wi-Fi 直接(http://developer.android.com/guide/topics/connectivity/wifip2p.html)。

 类似资料:
  • 我正在开发一个应用程序,我需要扫描WiFi网络,并显示所有连接设备的列表。 允许用户点击一个设备,应用程序应该显示该特定设备的所有硬件信息。这里我说的硬件是指内存、存储介质、存储容量、设备名称、设备IP地址等。 现在,这个设备可以是任何东西,比如xbox,带有Linux/Windows的笔记本电脑,iPhone之类的手机,或者任何基于Android的智能手机,甚至是打印机。 我如何扫描WiFi网络

  • 有没有一种方法可以检测我周围的所有Wifi设备,并从android设备获取信号强度。 为了实验性使用,我想在某些Android设备上运行应用程序。该应用程序应记录每部手机与其他手机之间的信号强度。我希望“连接”直接在手机之间,而不使用外部路由器。我相信这是可能的,因为Android手机具有作为Wifi路由器的功能,因此可能会被其他设备检测到。但我不知道如何以编程方式解决这个问题。 有人能帮忙吗?你

  • 问题内容: 我正在开发一个需要扫描WiFi网络并显示所有已连接设备列表的应用程序。 允许用户点击设备,该应用应显示该特定设备的所有硬件信息。这里所说的硬件是指-RAM,存储介质,存储容量,设备名称,设备IP地址等。 现在,该设备可以是xbox,带Linux / Windows的笔记本电脑,iPhone等手机或任何基于Andorid的智能手机甚至打印机。 如何扫描WiFi网络并查询/检测连接到它的所

  • 我正在尝试在这里制作一个应用程序,它将检测WiFi网络中连接的所有设备。我已经做了足够多的谷歌,并提出了一个应用程序,可以检测在应用程序的WiFi网络中连接的设备的IP地址。 现在我想要更多的东西。 < li >我能否找到设备名称,即电话名称或型号或系统名称,以及我们可以用来检测特定设备的任何信息? < li >我们能否找到设备距离,例如该设备距离我们使用应用的手机有多远? < li >这是主要任

  • 我可以通过调用来获取内部存储,它返回内部存储的路径。 这方面的任何帮助都将非常感谢,因为没有一个标准的AFAIK可以用来检索所有连接的存储设备的列表。 还有,很多解决方案在不同的设备和Android版本上不起作用。

  • 我实际上是在编程一些东西,不让用户访问Android原生wifi连接页面,所以我在我的Android应用程序中编程。它扫描可用的无线网络,将其显示在列表视图中,然后单击要连接的网络。 事实上,除了我的连接功能之外,一切都很好,这使得我的应用程序崩溃,所以如果你有任何想法...下面是代码(这是用户输入网络通行证后调用的函数)和堆栈跟踪: 堆栈跟踪: