想要在同一个局域网内,发现其他设备。有如下的几种方案。
-
应用起来之后,请求同一个地址,构建同一个组。每个应用就是这个组的成员。每个成员之间相互知道。
这样的方案,缺点是需要有一个中心,用来管理这些成员 -
在同一局域网内,相互之间广播。广播内容,可以是自己的ip和对应服务的端口号,以及需要携带的信息。
这样的方案,缺点就是广播可能会带来大量的网络阻塞。 -
在同一局域网内,使用多播。android 内置有mDNS服务,和客户端,它就是使用的多播方式。可以将自身被
其他设备发现,也可以发现其他设备。
在介绍mDns的使用之前。先来说说广播和多播的原理。
广播原理简述
IPV4 将子网的最后一位地址。作为广播地址。比如192.168.1.0/24子网中,广播地址为192.168.1.255.
所有数据包的目的地址为192.168.1.255时。
路由设备会将这个数据包,发往该子网内的所有设备。
除了192.168.1.255外,另外一个地址为255.255.255.255是全局广播地址。但是路由器并不会将它转发到其他网络中,它只会转发到本网络中。因此效果和192.168.1.255一样。
多播原理简述
在上面广播会转发给本网络的所有设备不同。多播只会转发给特定的设备。那些设备是特定设备呢?基本步骤如下:
- 需要接收多播数据包的设备,使用IGMP协议(这是一个网络层协议)将自己的IP地址,报告给路由器,表示自己要接收某个多播IP的数据包
- 路由器在接收到第一步的IP地址之后,就保存下来。如果有某个设备发了一个多播的数据包给路由器,那么路由器就将这个数据包,转发给这个多播组内的所有成员。
- 正如广播地址一样,多播也是有地址划分的,他是IPV4D类地址,范围是224.0.0.0到239.255.255.255。
- 多播地址常常是固定的,比如即将介绍的

文章介绍了在同一局域网内发现其他设备的两种方法:广播和多播,强调了各自的优缺点。广播可能导致网络阻塞,而多播则更高效,定向传递信息。Android系统利用内置的mDNS服务(NsdManager)实现多播发现和注册服务,允许设备互相发现并解析服务信息。同时,文章提供了Linux系统下使用avahi工具测试mDNS的步骤。

6015

被折叠的 条评论
为什么被折叠?



