windows上Bonjour服务发布的一些坑
1.遇到的问题
单独发布信息从某个网卡上出去后,会出现自动消失,并且有时会跑到另外一张网卡上
DNSServiceRegister注册服务时回调一直未触发
2.解决方案
dnssd.exe它可以监听到服务的Add和Rmv
源码中使用的是DNSServiceBrowse
因此可以使用DNSServiceBrowse先监听本地要发布的服务,监听到后再判断网卡是否是要发布的网卡,再重新注册
验证后发现大概率出现DNSServiceBrowse监听的fd失效,最终采用检测到失效后再重新监听
此方案验时发现经过长时间煲机会出现bonjour Server的崩溃 关闭,此时放弃了,选择发布所有网卡,没出现什么问题,这个问题应该是 mDNSResponder的bug
还有两个方案未进行验证:
1、在使用过程中,发现它自己的dnns-d应用监听只会小概率出现崩溃,猜想把监听服务的功能做成一个进程,再进行保活可能会解决问题
2、mDNSResponder中提供了Linux发布服务的demo,可以单独将服务抽出来进行发布,并在update处选择要发布的网卡
3.Bonjour的发布流程
4.参考代码
https://opensource.apple.com/tarballs/mDNSResponder/