获取C中LAN上的设备列表

我想获得一个连接到我的本地网络的可用设备列表(它们的IP地址或主机名应该没问题)。 我在C#中有一些例子,但我找不到任何使用C / C ++的示例。 我很熟悉BSD套接字API,只是为了澄清。

我有一个“存根”的想法:也许我应该确定我的LAN上的设备可能属于的IP地址的范围,然后确定它们是否例如响应PING或类似的东西。 我怎么能实现这些?

我希望我的应用程序在Linux和iOS上运行。 这就是为什么我更喜欢BSD套接字,或者最喜欢的是Foundation / GNUstep(尽管它们是用Objective-C编写的)。

您还可以例如将ICMP回送请求数据包发送到224.0.0.1。 这是每个节点应响应的特殊全节点多播地址(除非防火墙规则或网络策略设置阻止它)。