mDNS实现之Bonjour与Avahi(一)——win/linux/arm交叉编译

7 篇文章 1 订阅
3 篇文章 0 订阅

0.Part2:mDNS实现之Bonjour与Avahi(二)——win/linux/arm交叉编译_平凡之路-CSDN博客1.BonjourBonjour - Apple Developer● 源码(mDNSResponder-878.70.2):https://opensource.apple.com/tarballs/mDNSResponder/● Bin&SDK:https://developer.apple.com/download/all/?q=Bonjour%20SDK%20for%20WindowsBonjour-winBonjour...https://blog.csdn.net/qq_23958061/article/details/122092864?spm=1001.2014.3001.5502

1.Windows

Bonjour - Apple Developerhttps://developer.apple.com/bonjour/

Bonjour SDK for Windowshttps://developer.apple.com/download/all/?q=Bonjour%20SDK%20for%20Windows

        下载上面官网sdk,安装(Bonjour服务启动,依赖于mDNSResponder.exe进程),C#在工程中添加COM组件即可使用。

        源码参考(C#参考DNSServiceBrowser.NET工程):

Source Codehttps://opensource.apple.com/tarballs/mDNSResponder/

        源码目录分析可参考其他文章:

mDNSResponder介绍与移植_Aero's WorkSpace.-CSDN博客_mdnsdmDNSResponder项目是Bonjour的一个组成部分。 Bonjour是法语“你好”的意思。苹果的Bonjour软件源自正IETF零配置网络工作。零配置工作有三个要求:分配IP地址(即使没有分配DHCP服务器的IP地址)2.提供名称到地址的转换(即使没有DNS服务器)3.在网络上发现相关的网络服务(同样,没有其他的基础协议)对于1,通过自分配的本地链接地址实现。对于2,通过多...https://blog.csdn.net/yuangc/article/details/101676976

2.Linux及ARM交叉编译、部署

        linux参考下面文章:[从0到1搭嵌入式工程]局域网自动发现功能,苹果Bonjour/mdnsResponder移植_SevenFighting的专栏-CSDN博客在局域网内通信,就必须知道对方的IP地址和端口,苹果开源的mdnsResponder,就是利用mdns组播协议,通过服务域名,来获取相应ip地址的一种方式。比如我们有一个摄像头,在联网的情况下,同一个局域网下的app想发现这个摄像机,并和摄像机建立联系。这样一个需求,需要摄像头调用mDNS_Register,通过传参告知mdns库,在指定的port上注册一个did._ipcxx._tcp....https://blog.csdn.net/bingyu880101/article/details/81563319        至于ARM交叉编译时,前提是你已有ARM平台交叉编译工具链(可能有点废话了),需要修改的部分就是我们的mDNSResponder-878.70.2(根据下载的源码版本)下的mDNSPosix下的Makefile,要做的修改如下(删除两个CFLAGS_OS、指定CC、指定STRIP):

         ARM上的部署(实际上是参考该Makefile的install指令):

①将mDNSPosix/build/prod的可执行文件“mdnsd”拷贝到嵌入式ARM平台板卡的“/usr/sbin”目录下;

②将mDNSPosix/build/prod下的libdns_sd.so、libnss_mdns-0.2.so直接拷贝到“/usr/lib/”目录下;

③将Clients/build下的dns-sd拷贝到合适目录;

        ARM上的使用(通过dns-sd可执行文件):

①首先将mdnsd作为daemon启动(可通过ln -s添加到init.d下自动启动);

②在应用需要时,参数启动dns-sd,如“./dns-sd -R hxx _lvds local 8888 172.100.19.251”,如下图所示(win上发现arm上的mdns服务)

3.额外的(Avahi)

        linux上专门的mDNS库(不支持windows),可以参考(实际上博主在ARM上采用该种实现,win上采用bonjour实现,两者是兼容的,上述对bonjour在arm上的编译及部署只是一些尝试):

http://www.avahi.org/http://www.avahi.org/        Avahi相比于Bonjour的实现,维基百科上这么说:

=======================================

Avahi vs. Bonjour[edit]

The Avahi project started in 2004 because Apple's Zeroconf implementation, Bonjour, used the GPL-incompatible Apple Public Source License. In 2006 Apple relicensed parts of Bonjour under the Apache License.[2]

Avahi's performance resembles that of Bonjour, sometimes exceeding it; however Avahi can lose services when managing large numbers of requests simultaneously.[3]

========================================

Avahi 项目始于 2004 年,因为Apple的 Zeroconf 实现Bonjour使用了与 GPL 不兼容的Apple Public Source License。2006 年,Apple在Apache 许可重新许可了 Bonjour 的部分内容。[2]

Avahi的表现类似于卓悦,有时甚至超过它;然而,当同时管理大量请求时,Avahi 可能会丢失服务。[3]

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值