3

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

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

4

4 回答 4

2

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

如果您telnet//可以访问您的 AP sshconsole您可以尝试以下任一方法,具体取决于您的 wifi 硬件和驱动程序。

博通无线网卡:

iw assoclist

Atheros 无线网卡:

wl_atheros assoclist

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

iwlist [interface] scan

或者

iwlist [interface] ap/accesspoint/peers

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

于 2013-09-18T10:00:49.190 回答
1

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

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

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

于 2013-09-18T09:59:41.177 回答
1

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

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

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

编辑:如果您使用的是 IPv6,您可以查看邻居发现协议(NDP) 哪种替换 ARP。

于 2013-09-18T10:13:02.210 回答
0

您应该考虑在 Linux 环境中使用现有工具。开始看这里:在 Linux 机器上获取所有连接的 IP

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

man netstat
于 2013-09-18T09:55:22.403 回答