在LAN上实现设备发现的最佳方法是什么

Nac*_*hip 10 networking multicast broadcast device discovery

我在网络编程方面经验不足,我正在编写一个多平台系统,要求每个设备能够在同一个局域网内找到其他设备.我正在寻找正确的方法来做到这一点,并希望这里的人们可以给出一个很好的建议.这是我的设计要求:

  1. 我使用的是C++,解决方案需要跨平台,至少能够在iOS,Windows,Android上运行.

  2. 如果可能的话,系统应该非常轻,并且在没有特殊设置或网络要求的情况下工作.

以下是我正在考虑的不同方法:

  1. 使用uPnP协议,但我对它不是很熟悉,似乎没有很多关于这个主题的代码示例.

  2. 使用传统的套接字方法,在每个设备上创建服务器/客户端,并将数据包发送到LAN中的每个IP.然后手动完成所有事情.如果我错了,纠正我,如果我发送数据包到广播地址,这是否意味着系统自动将我的数据包发送到子网内的每个IP?

  3. 使用外部服务器,所有客户端都将注册,然后从该服务器获取有关其他(已注册)客户端的信息.但是,我不确定每个客户端应该连接哪些信息以确定它们位于同一LAN中.

让我知道我在想什么是有意义的.任何意见是极大的赞赏.

mar*_*rko 4

您尚未列出的选项之一是ZeroConf\ 的 DNS-SD协议。

\n\n

Apple 大量使用它 - 将其命名为Bonjour (n\xc3\xa9e Rendezvous)。\n与 iOS 和 MacOSX 紧密集成。
\nApple 还提供了Windows实现、SDK 并开源了 mDNS 服务。

\n\n

Android 似乎开箱即用地支持它。

\n\n

大多数桌面发行版中都包含Avahi形式的对 Linux 的强大且成熟的支持。

\n\n

似乎用户需要安装任何东西的唯一平台是 Windows,即使如此,它也安装了 iTunes(用于音乐库共享)和任何 Apple 无线接入点的设置软件。

\n