美文网首页
android局域网发现服务(mDNS)

android局域网发现服务(mDNS)

作者: 我已不是少年郎 | 来源:发表于2019-07-17 18:08 被阅读0次

背景

手机要在局域网内发现wifi模块设备,以前的项目方案是用udp广播,但是由于做ios开发的小伙子技术水平有限,处理不好这个广播,导致路由器阻塞卡死,经常出各种问题。
这个版本原想用组播的,但是发现原来android有一个Context.NSD_SERVICE服务可以用来做局域网发现,所以就用这个mDNS来做局域网发现。

填坑

由于手机APP要发现wifi模块,所以APP作为客户端接收数据,wifi模块作为服务端,负责发送自己的模块信息。

主要用到NsdManager,具体客户端代码可以网上自己搜
NsdManager mNsdManager = (NsdManager) mContext.getSystemService(Context.NSD_SERVICE);

其中有个参数NSD_SERVER_TYPE,这个参数是不能随便乱改的,否则服务启动会失败,
mNsdManager.discoverServices(NSD_SERVER_TYPE, NsdManager.PROTOCOL_DNS_SD, mDiscoveryListener);

discoverServices函数源码

查看源码注释,"_http._tcp" 是用来做http协议,"_ipp._tcp"是用来做打印机协议。

相关文章

网友评论

      本文标题:android局域网发现服务(mDNS)

      本文链接:https://www.haomeiwen.com/subject/pcuclctx.html