前段时间因为项目需要,开始研究Bonjour,下面先来介绍下Bonjour吧。

1.什么是Bonjour?

Bonjour这个词来源于法语,是“你好”的意思。在这里它是指由Apple推出的零配置网络协议,遵从这个协议的设备可以在局域网内发现彼此,设备之间就可以像人一样打招呼发现对方。

2.bonjour简单工作流程


1)发布服务

在同一局域网中,服务端通过DNSServiceRegister函数来注册服务。

DNSServiceErrorType DNSSD_API DNSServiceRegister
    (
    DNSServiceRef                       *sdRef ,
    DNSServiceFlags                     flags,
    uint32_t                            interfaceIndex,
    const char                          *name,         /* may be NULL */
    const char                          *regtype,
    const char                          *domain,       /* may be NULL */
    const char                          *host,         /* may be NULL */
    uint16_t                            port,          /* In network byte order */
    uint16_t                            txtLen,
    const void                          *txtRecord,    /* may be NULL */
    DNSServiceRegisterReply             callBack,      /* may be NULL */
    void                                *context       /* may be NULL */
    );

重点提一下:

sdRef 为服务索引,如果注册服务成功则初始化这个索引。通过DNSServiceRefDeallocate()来释放。

regtype 注册的服务类型。

port 端口号必须是要网络字节序的,笔者就是因为当初就是没有使用网络字节序的端口号导致无法和其他设备连接。

callBack 回调函数,

context  上下文,

返回值 kDNSServiceErr_NoError 表示成功,否则返回错误码。

2)发现服务

客户端通过DNSServiceBrowse函数查看发布服务的设备名称。

DNSServiceErrorType DNSSD_API DNSServiceBrowse

(
    DNSServiceRef                       *sdRef,
    DNSServiceFlags                     flags,
    uint32_t                            interfaceIndex,
    const char                          *regtype,
    const char                          *domain,    /* may be NULL */
    DNSServiceBrowseReply               callBack,
    void                                *context    /* may be NULL */
    );


3)连接服务

选择想要连接的设备进行通讯。

3. 关于后台服务守护进程mDNSResponder

由于笔者使用的是windows系统,在安装完Bonjour的SDK后,就会有以一个mDNSResponder后台守护进程。这个东西对稍微有点洁癖的我来说,实在是太恶心了。写了个demo想给同学测试下,不断不行啊,一定要安装这个服务才行。。。。。。难以让人接受。。。。。。

一直在想这个东西可不可以直接弄成动态链接库啊,这样的话,使用bonjour协议的程序就不用安装这个服务了。一直没成功。如果有读者有好的建议,希望可以一起研究。

bonjour简单使用心得相关推荐

  1. 天下霸图修改_天下霸图2 简单修改心得

    很多人说使用CureROM后无法窗口化,其实是可以的 方法是先使用D3DWindower,然后使用CureROM进入 钱和资源的修改不多说了,,这个玩过修改器的基本都知道 不过我是采用锁定数值的办法修 ...

  2. vue-cli简单使用心得

    对于大型的项目,需要考虑项目结构,项目构建和部署,热加载,代码单元测试等事情,这个时候我们就需要使用脚手架工具方便开发. 环境:node npm 这里我们使用vue-cli来开发vue项目: 1-安装 ...

  3. Inno 简单使用心得记录

    升级安装时: ;confirmoverwrite:"确认是否覆盖原有配置文件"  Source: "SqlConfig.ini"; DestDir: " ...

  4. matlab实验之简单识别手写0-9数字程序

    实验目的   能够用matlab设计一个程序,能够简单识别0-9等阿拉伯数字   或者识别abcd等字母 实验原理 根据手写图片在二通道里的每个像素点以二进制表示,可以设计一个函数,得到每一个手写样本 ...

  5. 使用DataTable作为存储过程的参数

    最近工作中写了几个存储过程,需要向存 储过程中传递字符串,因为SQL Server 2000中没有内置类似于 split 的函数,只好自己处理,将前台数据集中的一列用逗号拆分存到一个List中,再转化 ...

  6. [IDDFS+背包] 洛谷P2744 [USACO5.3]量取牛奶Milk Measuring

    折腾了好几天的题目,简单讲讲心得. 首先看了题解才写出来的,因为有一个核心的一点没想到,用桶的数量当 迭代加深搜索的层数,算是长见识了~ 每次dp数组的初始化自己手动赋值0,不然会TLE一个点. 思路 ...

  7. 周鸿祎:如何做好产品经理

    我刚才来的时候,会议主办方跟我讲,今天来交流的很多人是设计师.产品经理,据说还有 50 位公司的高管,我今天希望跟大家有一个交流,对很多公司高管来讲,我其实有一个建议,过去这种公司分工特别明确,做一个 ...

  8. 非等级式随机森林----随机蕨分类器

    这几天一直在捣鼓着非等级式的随机森林,在论文[1]中,作者利用各种手段,使得非等级式的随机森林呈现出来,至于是否十行C++代码就可以实现,这还有待考证,毕竟至少我的代码不只十行.      OK~ 细 ...

  9. 怎样快速上手PPT制作?

    引言 无论是在学习还是在工作中,PPT的制作都应该是我们的必备技能.那么,在PPT的制作中我们通常容易触犯哪些错误,又该怎样快速上手制作PPT呢? 下面是小编的一些简单的心得.在我自己总结的同时呢,也 ...

最新文章

  1. 【Win32 API学习]打开可执行文件
  2. Win10创意者更新刚发布 夜间模式就出BUG
  3. java都市男人心痒痒_说的男人心痒痒的情话 让男人心痒痒的话,谁能帮我弄几句呀?...
  4. 你需要的不是重构,而是理清业务逻辑(转)
  5. php判断ip跳转城市,PHP判断IP并转跳到相应城市分站的方法
  6. 人工智能学习--文本检测和识别综述(2021)
  7. Centos7 -bash: ifconfig : command not found
  8. python post与get的区别_Python Requests库 Get和Post的区别和Http常见状态码
  9. java-工具-轮子
  10. VC++ 求绝对值函数
  11. 网易云信 NIM_duilib 源码分析
  12. layui个人中心html,Layui的简易入门教程
  13. [unity]在unity中创建圆锥体
  14. 包裹侠查快递单号_包裹侠快递查询
  15. golang的ECB加密代码文件下载
  16. stl排序之sort函数
  17. 打开ftp服务器上的文件夹时发生错误 请检查是否,以及220 227 报错
  18. 手持设备访问互联网策略综述
  19. 有一段英文文本 ,其中有单词连续重复了 2 次 ,编写程序检查重复的单词并只保留一个 。例如 ,文本内容为 This is is a desk.””,程序输出为 This is a desk。
  20. 建筑智能信息网络系统计算机网络系统检检测指导书,04智能建筑检验批划分作业指导书.doc...

热门文章

  1. 真正的AI实时换脸技术——可用于直播换脸带货
  2. stm32f103学习笔记 通过串口将字库文件下载到flash中
  3. 恒玄BES调试笔记-BES2500音量表
  4. 积分总是遭闲置?看看积分被用户沉淀不用的两个原因
  5. 【深度学习】V-Net 3D医学图像分割 Dice loss 损失
  6. 对话何小鹏:汽车的消费电子化,其实拉高了造车门槛
  7. 欧美项目的文字乱码问题
  8. js文件大小转换成mb、kb为单位
  9. 响应式前端框架Bootstrap系列(20)附加导航(Affix)插件
  10. 炒股常用的软件有哪些特点?