android 如何被局域网内的其他设备发现

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

想要在同一个局域网内,发现其他设备。有如下的几种方案。

  1. 应用起来之后,请求同一个地址,构建同一个组。每个应用就是这个组的成员。每个成员之间相互知道。
    这样的方案,缺点是需要有一个中心,用来管理这些成员

  2. 在同一局域网内,相互之间广播。广播内容,可以是自己的ip和对应服务的端口号,以及需要携带的信息。
    这样的方案,缺点就是广播可能会带来大量的网络阻塞。

  3. 在同一局域网内,使用多播。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一样。

多播原理简述

在上面广播会转发给本网络的所有设备不同。多播只会转发给特定的设备。那些设备是特定设备呢?基本步骤如下:

  1. 需要接收多播数据包的设备,使用IGMP协议(这是一个网络层协议)将自己的IP地址,报告给路由器,表示自己要接收某个多播IP的数据包
  2. 路由器在接收到第一步的IP地址之后,就保存下来。如果有某个设备发了一个多播的数据包给路由器,那么路由器就将这个数据包,转发给这个多播组内的所有成员。
  3. 正如广播地址一样,多播也是有地址划分的,他是IPV4D类地址,范围是224.0.0.0到239.255.255.255。
  4. 多播地址常常是固定的,比如即将介绍的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值