android中的网络发现

android中的网络发现,android,discovery,netbios,Android,Discovery,Netbios,我想发现通过android手机连接到我的Wifi网络的所有设备(主机名、MAC地址和供应商名称)。设备上没有运行公共服务 尝试了以下方法: ping子网中的所有IP花费的时间太长(inetAddress.isReachable()) 发送nbstat请求以查询NETBIOs名称在某些设备中有效。其中一些给出了PortNotOpenException(端口137未打开)。其他一些设备未启用NETBIOsname服务 尝试使用android。无法使用获取主机名 nbtAddress.getByNam

我想发现通过android手机连接到我的Wifi网络的所有设备(主机名、MAC地址和供应商名称)。设备上没有运行公共服务

尝试了以下方法:

  • ping子网中的所有IP花费的时间太长(
    inetAddress.isReachable()
  • 发送
    nbstat
    请求以查询
    NETBIOs
    名称在某些设备中有效。其中一些给出了
    PortNotOpenException
    (端口137未打开)。其他一些设备未启用
    NETBIOs
    name服务
  • 尝试使用android。无法使用获取主机名

    nbtAddress.getByName(ip)
    
  • 在子网中的所有IP地址上循环。此方法提供所有主机名,无论它们是否处于活动状态

    查找网络上所有活动设备的最佳方法是什么?一些应用程序似乎可以做到这一点

    编辑:我试着分析安卓程序是如何做到这一点的

  • 用2台设备连接了一个小热点。在FING中开始发现并在wireshark上捕获数据包。 发送以下一系列请求(全部广播):
  • 在大型wifi网络(65K设备)上启动了发现 捕获Netbios名称服务查询和响应数据包。(单播,有时为广播地址)
  • 同时,我尝试在IDE上打印我的android手机的arp条目

    随着FING应用程序中的发现过程,条目数不断增加

    发现开始前的5个条目

    随着发现的进行,条目数增加到1025个

    发现结束后,条目数减少到150个


    到底发生了什么?没有ICMP请求。可以在android应用程序中发送ARP请求吗?请帮忙

    看看这是否对您有帮助我确实从这个GitHub repo检查了Android网络发现:。该应用程序还使用isReachable()查找设备是否处于活动状态。WifiP2PManager只能在android设备中使用。我希望能够检测所有设备(路由器、iPhone、MAC等),我希望实现完全相同的功能。我尝试了Android网络发现,考虑到我有2-3台连接设备(包括我的电脑),我的家庭网络的速度相当不错。此应用程序不会显示您正在使用的设备,因此您可能也需要它,但我不确定如何解决此问题。我想扫描一个大型网络(高达65k IP)。网络发现只扫描255个IP。我的子网掩码是16,但网络发现应用程序显示它为23。你找到任何anwser了吗?