【发布时间】:2013-09-23 00:37:19
【问题描述】:
我正在学习 C 中的套接字,但我找不到任何有关获取 WLAN 网络中所有已连接设备列表的信息(我使用的是 Linux)。
谁能提供我的信息或我可以从哪里开始学习?
【问题讨论】:
我正在学习 C 中的套接字,但我找不到任何有关获取 WLAN 网络中所有已连接设备列表的信息(我使用的是 Linux)。
谁能提供我的信息或我可以从哪里开始学习?
【问题讨论】:
您应该考虑在 Linux 环境中使用现有工具。开始看这里:Get all connected IP´s on the Linux machine
不要重新发明轮子。如果可以的话。
man netstat
【讨论】:
查看 ARP 缓存。 ARP 代表地址解析协议,它是机器将 IP 地址转换为硬件地址的方式。
没有真正通用的方法来获取所有联网设备的列表,但是 ARP 很接近。
Ping 或只是打开和关闭与子网上每个地址上已知端口的连接会很快填满 ARP 缓存...
【讨论】:
您需要检查无线接入点(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)获得它
如果您知道您的网络 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。
【讨论】: