13

我在网络编程方面几乎没有经验,我正在编写一个多平台系统,该系统要求每个设备能够在同一个 LAN 中找到其他设备。我正在寻找正确的方法来做到这一点,并希望这里的人们可以提供好的建议。以下是我的设计要求:

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

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

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

  1. 使用 uPnP 协议,但我不是很熟悉,而且似乎没有很多关于该主题的代码示例。

  2. 使用传统的socket方式,在每台设备上同时创建Server/Client,并将数据包发送到局域网中的每一个IP。之后手动完成所有操作。如果我错了,请纠正我,如果我向广播地址发送数据包,是否意味着系统会自动将我的数据包发送到子网内的每个 IP?

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

让我知道我的想法是否有意义。任何意见是极大的赞赏。

4

1 回答 1

4

您没有列出的一个选项是ZeroConf 的 DNS-SD协议。

Apple 大量使用它——将其作为Bonjour(née Rendezvous)进行营销。与 iOS 和 MacOSX 紧密集成。
Apple 还提供了一个Windows实现、一个 SDK 并开源了 mDNS 服务。

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

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

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

于 2013-04-25T23:26:04.633 回答