我正在学习C中的套接字,但我找不到有关获取WLAN网络中所有连接设备列表的任何信息(我正在使用Linux)。
任何人都可以向我提供信息或我可以从哪里开始学习吗?
答案 0 :(得分:2)
您需要检查无线接入点(Wifi路由器)上的所有关联。 大多数Wifi路由器都有一个web ui,其中显示了所有相关设备。
如果您有telnet
/ ssh
/ console
访问您的AP,则可以尝试以下任一方法,具体取决于您的WiFi硬件和驱动程序。
Broadcomm无线网卡:
iw assoclist
Atheros无线网卡:
wl_atheros assoclist
您也可以尝试iwlist(8)
,这是一个从无线接口获取信息的Linux程序。
iwlist [interface] scan
或
iwlist [interface] ap/accesspoint/peers
有关支持详情,请参阅您的wifi驱动程序文档。
答案 1 :(得分:1)
查看ARP缓存。 ARP代表地址解析协议,它是机器将IP地址转换为硬件地址的方式。
没有真正通用的方法来获取所有联网设备的列表,但ARP接近。
Ping或只是打开和关闭子网上每个地址上的一个众所周知的端口的连接会很快填写ARP缓存......
答案 2 :(得分:1)
如果你知道你的网络IP地址,我会建议你对你的网络广播地址进行广播ping,并记下回答的设备。
例如,如果您的网络为192.168.1.0/24
,则您的广播IP地址为`192.168.1.255
,而linux上的命令为ping -b 192.168.1.255
。然后,您可以在程序中获取命令的结果,并对其进行处理以提取其他连接设备的IP。
Disclamer:某些设备可能配置为永不回复ping请求,然后使用此方法隐藏它们...
编辑:如果您使用的是IPv6,可以查看Neighbor Discovery Protocol(NDP)哪种替代ARP。
答案 3 :(得分:0)
您应该考虑在Linux环境中使用现有工具。要开始看一下:Get all connected IP´s on the Linux machine
不要重新发明轮子。如果可以的话。
man netstat