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

时间:2013-04-25 22:53:42

标签: networking device broadcast multicast discovery

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

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

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:3)

您未列出的一个选项是ZeroConf's DNS-SD协议。

它被苹果公司大量使用 - 将其推销为Bonjour(néeRendezvous)。 iOS和MacOSX紧密集成 Apple还提供Windows实施,SDK和开源mDNS服务。

Android似乎支持out of the box

还有Avahi形式的强大而成熟的Linux支持,包含在大多数桌面发行版中。

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