【问题标题】:List of all devices connected to a network [closed]连接到网络的所有设备列表[关闭]
【发布时间】:2013-09-23 00:37:19
【问题描述】:

我正在学习 C 中的套接字,但我找不到任何有关获取 WLAN 网络中所有已连接设备列表的信息(我使用的是 Linux)。

谁能提供我的信息或我可以从哪里开始学习?

【问题讨论】:

    标签: c++ c linux wifi device


    【解决方案1】:

    您应该考虑在 Linux 环境中使用现有工具。开始看这里:Get all connected IP´s on the Linux machine

    不要重新发明轮子。如果可以的话。

    man netstat
    

    【讨论】:

    • 我不是在重新发明轮子,我是在学习轮子。
    【解决方案2】:

    查看 ARP 缓存。 ARP 代表地址解析协议,它是机器将 IP 地址转换为硬件地址的方式。

    没有真正通用的方法来获取所有联网设备的列表,但是 ARP 很接近。

    Ping 或只是打开和关闭与子网上每个地址上已知端口的连接会很快填满 ARP 缓存...

    【讨论】:

      【解决方案3】:

      您需要检查无线接入点(Wifi 路由器)上的所有关联。 大多数 Wifi 路由器都有一个 web ui,其中显示了所有关联的设备。

      如果您有 telnet/ssh/console 访问您的 AP,您可以根据您的 wifi 硬件和驱动程序尝试以下任一方法。

      博通无线网卡:

      iw assoclist
      

      Atheros 无线网卡:

      wl_atheros assoclist
      

      您也可以尝试iwlist(8),这是一个从无线接口获取信息的 Linux 程序。

      iwlist [interface] scan
      

      iwlist [interface] ap/accesspoint/peers
      

      有关支持详情,请参阅您的 wifi 驱动程序文档。

      【讨论】:

      • 我的(华为)路由器有未记录的命令:我无法获取关联列表。
      • 它有什么无线芯片组?你可以从dmesg(1)获得它
      • iwlist 命令很有用,谢谢
      【解决方案4】:

      如果您知道您的网络 IP 地址,我建议您对您的网络广播地址进行广播 ping,并记下应答的设备。

      例如,如果您的网络是 192.168.1.0/24,那么您的广播 IP 地址将是 `192.168.1.255,而 linux 上的命令是 ping -b 192.168.1.255。然后,您可以在程序中获取命令的结果并对其进行处理以提取其他连接设备的 ip。

      声明:某些设备可能被配置为从不响应 ping 请求,那么使用此方法它们将不可见...

      编辑:如果您使用的是 IPv6,您可以查看 Neighbor Discovery Protocol (NDP) 哪种替换 ARP。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-04
        • 2022-07-16
        • 2014-11-19
        • 1970-01-01
        相关资源
        最近更新 更多