0.Part1:

mDNS实现之Bonjour与Avahi(一)——win/linux/arm交叉编译_平凡之路-CSDN博客官网:Bonjour - Apple Developerhttps://developer.apple.com/bonjour/1.WindowsBonjour SDK for Windowshttps://developer.apple.com/download/all/?q=Bonjour%20SDK%20for%20Windows下载上面官网sdk,安装(Bonjour服务启动,依赖于mDNSResponder.exe进程),C#在工程中添加COM组件即可使用。 ...https://blog.csdn.net/qq_23958061/article/details/122040336?spm=1001.2014.3001.5501

1.Bonjour

Bonjour - Apple Developer

● 源码(mDNSResponder-878.70.2):https://opensource.apple.com/tarballs/mDNSResponder/

● Bin&SDK:https://developer.apple.com/download/all/?q=Bonjour%20SDK%20for%20Windows

Bonjour

-win

Bonjour

-x86

Bonjour

-arm

1.安装sdk,bonjour(mDNS_responder进程)服务启动

1.编译源码/mDNSPosix文件夹

1.使用交叉编译工具链,编译源码/mDNSPosix文件夹

2.C#调用COM组件-bonjour,或编译源码工程获得可执行文件

2.在mDNSPosix/build/prod/下获得x86下的可执行文件(file查看),启动mdnsd用于服务发现(daemon进程)

libdns_sd.so

libnss_mdns-0.2.so

mDNSClientPosix

mdnsd

mDNSIdentify

mDNSNetMonitor

mDNSProxyResponderPosix

mDNSResponderPosix

2.同左,生成arm下的可执行文件(file查看)

3.一般情况下client端仅需要browse(仅浏览已被sd发现的服务)而不需要去注册服务,代码参考源码中的DNSServiceBrowser.NET工程(browse验证:

.net工程界面浏览或dns-sd -B浏览

client验证:dns-sd.exe -R my_pc _my_type_upper._udp local 8889 "i am pc"

3.编译源码/Clients文件夹,在/Clients/build下获得x86可执行文件dns-sd

(browse验证:./dns-sd -B _my_type._udp local

client验证:./dns-sd -R my_pc _my_type._udp local 8889 "i am x86 board"

3.同左,生成arm下的dns-sd

*4.是否需要上位机创建client并注册服务,取决于业务逻辑,即目标服务端是否同样通过browse获取上位机要传递的信息(嵌入式设备通过串口、以太网等)

4.client端实现browse代码参考mDNSPosix下的Client.c、ExampleClientApp.c、ExampleClientApp.h;而注册服务,可以在进程中调用dns-sd输入参数控制修改(可以减少代码以及熟悉接口成本),以接收上位机注册信息,并在处理后重新注册变更后的服务

4.同左

2.Avahi

● 作为了解的源码(nss-mdns):https://github.com/lathiat/nss-mdns

● 源码(avahi):https://github.com/lathiat/avahi

Avahi

-x86

Avahi

-arm

1.安装sdk(apt install avahi-加两次tab,如下——但不包含client实现:

hxx@ubuntu:~$ apt install avahi-

avahi-autoipd   avahi-daemon    avahi-discover  avahi-dnsconfd  avahi-ui-utils  avahi-utils),或对源码进行编译获得

1.——

2.avahi-0.7源码工程中没有直接提供Makefile文件

●首先需要参考:

Makefile.am和makefile.in生成Makefile_Bendawang's Blog-CSDN博客_makefile.am文件生成makefile

生成Makefile

●示例(disable掉不用的或者当前环境缺少的,如qt3等):

./configure --disable-qt3 --disable-qt4 --disable-gtk3 --disable-gdbm --disable-python --disable-pygobject --disable-mono

2.生成arm版Makefile(生成在build-arm下):

./configure --disable-qt3 --disable-qt4 --disable-gtk3 --disable-gdbm --disable-python --disable-pygobject --disable-mono --prefix=$(pwd)/bulid-am --host=arm --with-distro=none

3.make install,头文件被安装到/usr/local/include/,

库被默认安装到/usr/local/lib/下(编译client需要用到):

libavahi-client.a

libavahi-client.la

libavahi-client.so -> libavahi-client.so.3.2.9

libavahi-client.so.3 -> libavahi-client.so.3.2.9

libavahi-client.so.3.2.9

libavahi-common.a

libavahi-common.la

libavahi-common.so -> libavahi-common.so.3.5.3

libavahi-common.so.3 -> libavahi-common.so.3.5.3

libavahi-common.so.3.5.3

libavahi-core.a

libavahi-core.la

libavahi-core.so -> libavahi-core.so.7.0.2

libavahi-core.so.7 -> libavahi-core.so.7.0.2

libavahi-core.so.7.0.2

libavahi-glib.a

libavahi-glib.la

libavahi-glib.so -> libavahi-glib.so.1.0.2

libavahi-glib.so.1 -> libavahi-glib.so.1.0.2

libavahi-glib.so.1.0.2

libavahi-gobject.a

libavahi-gobject.la

libavahi-gobject.so -> libavahi-gobject.so.0.0.5

libavahi-gobject.so.0 -> libavahi-gobject.so.0.0.5

libavahi-gobject.so.0.0.5

libavahi-ui.a

libavahi-ui.la

libavahi-ui.so -> libavahi-ui.so.0.1.4

libavahi-ui.so.0 -> libavahi-ui.so.0.1.4

libavahi-ui.so.0.1.4

3.实际的交叉编译过程中可能存在交叉编译工具链sdk中缺少.so缺少的情况,可能需要提供工具链的同事协助进行更新

4.client验证:

●将client-browse-services.c中需要browse的协议类型进行修改,如:_my_type._udp

●编译client:

gcc -o main_x86 client-browse-services.c /usr/local/include/avahi-client/*.h /usr/local/lib/*.so

●运行./main_x86,示例:

hxx@ubuntu:~/0_git_dev/common/avahi-client-hxx/x86_build$ ./main_86

(Browser) NEW: service 'hxx_pc' of type '_EH2302_UPPER._udp' in domain 'local'

(Browser) CACHE_EXHAUSTED

(Browser) ALL_FOR_NOW

Service 'hxx_pc' of type '_EH2302_UPPER._udp' in domain 'local':

HXX-PC.local:8889 (192.168.109.1)

TXT="i am pc"

cookie is 0

is_local: 0

our_own: 0

wide_area: 0

multicast: 1

cached: 1

4.client的demo尝试:
●将内核工程师提供的libavahi-client.so、libavahi-common.so、libavahi-core.so、libavahi-glib.so、libavahi-gobject.so拷贝到工具链的lib目录下

●source到交叉编译工具链环境变量文件

●使用环境变量中$CC对应编译器对demo进行编译:

$CC -o mdns_browser_arm client-browse-services.c  -lavahi-client -lavahi-common -lavahi-core -lavahi-glib -lavahi-gobject

●拷贝到arm板卡中运行(前提是avahi-daemon进程运行中,同时也代表运行环境ok)

root@eh9301_7ev1156:~# ./mdns_browser_arm

(Browser) NEW: service 'hxx_pc' of type '_EH2302_UPPER._udp' in domain 'local'

(Browser) CACHE_EXHAUSTED

(Browser) ALL_FOR_NOW

Service 'hxx_pc' of type '_EH2302_UPPER._udp' in domain 'local':

HXX-PC.local:8889 (172.100.19.134)

TXT="i am pc222"

cookie is 0

is_local: 0

our_own: 0

wide_area: 0

multicast: 1

cached: 1

mDNS实现之Bonjour与Avahi(二)——win/linux/arm交叉编译相关推荐

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

    0.Part2:mDNS实现之Bonjour与Avahi(二)--win/linux/arm交叉编译_平凡之路-CSDN博客1.BonjourBonjour - Apple Developer● 源码 ...

  2. 商用及企业级服务器搭建之二:linux系统,linux命令

    商用及企业级服务器搭建之二:linux系统,linux命令 linux系统 1. linux 一切皆文件,源码开放,具有多任务.多用户.多平台特性 2. 只有一个顶级目/,不分盘,文件名和命令区分大小 ...

  3. Linux学习系列二:Linux中的常用命令

    这个系列的Linux教程主要参考刘遄老师的<Linux就该这么学>.用的系统是RHEL8,如果遇见一些命令出现问题,请首先检查自己的系统是否一致,如果不一致,可网上查一下系统间某些命令之间 ...

  4. 科优稳健可Ansys.OptiSLang.6.2.0.44487.Win.Linux.X64

    科优稳健可Ansys.OptiSLang.6.2.0.44487.Win.Linux.X64    optiSLang可与多种CAE软件或者求解器集成,可基于其求解器进行各种工程仿真分析或者数据处理, ...

  5. 二丶Linux安装xdd-plus教程及必备依赖的安装+青龙对接xdd

    二丶Linux安装xdd-plus教程及必备依赖的安装 没有服务器的先自行购买,这里推荐腾讯云2H4G8M首年70–点击购买 **首先需要安装青龙容器没装的青龙容器部署安装及常用命令 QQ交流群:10 ...

  6. 鸟哥的Linux私房菜(服务器)- 主机基本安全之二: Linux线上自动升級

    主機基本安全之二: Linux 線上自動升級 切換解析度為 800x600 最近更新日期:2006/09/10 本文已不再維護,更新文章請參考這裡 在現在的 Internet 上面,Cracker 實 ...

  7. minio下载及安装:win linux平台

    minio下载及安装:win linux平台 docker run -p 9000:9000 -v /mnt/data:/data minio/minio server /data minio.exe ...

  8. 乐鑫代理-启明云端分享ESP32系列教程之二:Linux搭建esp-idf环境

    提示:此教程依据乐鑫官方的ESP32入门教程总结而来,仅供个人参考学学习,如有错误,欢迎批评指正.乐鑫官方参考: 乐鑫官方文档地址 1.搭建esp-idf环境 1.1安装虚拟机与Ubuntu 未安装请 ...

  9. Linux学习之CentOS(二)--初识linux的一些常用命令

    Linux学习之CentOS(二)--初识linux的一些常用命令 在VM上安装完了CentOS6.4以后,看着linux系统成功跑起来,心里小激动了一把......但是前方学习的道路还很遥远... ...

最新文章

  1. mysql当前时间减1小时_最佳睡眠时间:晚上睡眠不超8小时,午睡不超1小时
  2. Attention Mechanism
  3. ubuntu dig timeout解决方法,dnscat执行失败也是这个原因
  4. 【职场攻略】是什么决定了我们的工资
  5. JavaScript实现省市联动
  6. 关于java的public,private,protect,以及默认权限的理解
  7. wxWidgets:wxDialog类用法
  8. python读文本文件的过程是怎样的_读写文本文件的步骤_Python读写txt文本文件的操作方法全解析...
  9. BGP小实验(一)——小实验练练手走起来
  10. php 取url根域名,php中取得URL的根域名的代码
  11. windbg 常用命令详解
  12. 【ES6(2015)】Promise
  13. 我的渣渣java实训
  14. [Hadoop]-Yarn-调度器篇
  15. 二维图像的离轴数字全息及显示
  16. Java文件上传【通用】
  17. 剑指offer T26 重排链表
  18. dell商务计算机主机闪烁黄灯,戴尔电脑开不了机 已经几天了 主机灯橙色 闪闪的...
  19. 【大数据】城市公交网络分析与可视化(二):获取公交行驶路径并绘制散点图
  20. 用Markdown画流程图

热门文章

  1. 【python】Django系列Day06--Django中间件介绍
  2. 数据结构与算法之二叉树广度遍历、深度遍历总结
  3. 巴西总统Telegram账号被入侵背后,攻击关键点竟是手机语音信箱
  4. 必应好壁纸(必应壁纸) 官方主页
  5. python2字符串编码方式_编码方式的区别以及文本在python2中的应用
  6. 【JAVA黑马程序员笔记】四 P314到P384(特殊流、多线程编程、网络编程模块、lambda表达式、接口组成更新、方法引用、函数式接口)
  7. 招联金融招聘实习生内推
  8. Go 安装第三方包 与 GoLand 导入第三方包
  9. Fluent动网格【2】:Profile文件
  10. 社科发布:十大调查研究咨询公司助力中国梦