bonjour的使用

os中,bonjour是一个零配置的网络服务分发服务器与客户端。

在使用bonour之前你应该明白的是,bonjour并不负责数据传输,只负责发布服务与检索服务,并在客户端获取服务端的信息。

浏览的过程

1.创建NSNetServiceBrowser实例,设置delegate

2.搜索存在的域名(domain name) (有两个方法,参考开发文档看区别)

3.在搜索域名结束之后,一定要结束搜索(使用stop方法)之后在开始搜索每个domain上(或者特定domian)的服务。当然,如果提前知道domain,可以直接掠过第一步,直接搜索特定类型的服务

4.搜索到特定类型的服务之后,得到回调。可以设置这个服务(NSnetService)的delegate,调用地址解析函数resolveWithTimaeout:进行地址解析,在回调函数中获取地址(从NSnetService 的 addresses参数中),如果没有进行解析,地址参数是空的。

PS:一个browser监控所有的domain类型的同时不能监控服务,或者可以监控一个domain下某个类型的服务,但不能在监控其他。

涉及到的类:NSNetService NSNetServiceBrowser 框架:Foundation

使用方法:

服务端:

publish一个服务:

1.创建一个socket,并监控某个端口(因为Foundation没有提供有关socket的类,所以需要使用Core Foundation的函数)

2.使用带有端口的初始化函数初始化NSNetService,设置delegate,并将它添加到一个runloop里面。最后调用NSNetService的publish函数发布应用。

你如果想要在publish一个NSNetService的时候使用它的地址,进行resolve的时候一定要在publish之前,你可以在resolve之后publish,但是不能反过来。

时间: 2024-08-30 09:14:10

bonjour的使用的相关文章

【读书笔记】iOS网络-使用Bonjour实现自组织网络

Bonjour就是这样一种技术:设备可以通过它轻松探测并连接到相同网络中的其他设备,整个过程只需要很少的用户参与或是根本就不需要用户参与.该框架提供了众多适合于移动的使用场景,如基于网络的游戏,设备间的文件共享,甚至是家庭自动化. 一,zeroconf概览. 1,寻址 2,解析 3,探测 二,Bonjour概览 1,发布服务 2,浏览服务 3,解析服务 4,与服务进行通信 三,实现基于Bonjour的应用 1,员工应用 2,顾客应用 四,总结 Bonjour是一项非常棒的技术,可以实现自组织网络

bonjour

首先bonjour并不是必须的,但是它的确很方便,如果没有它我们需要指定ip地址进行局域网的传输,有了它就可以根据服务的具体的名称来选择服务,可以这样来理解bonjour就相当于hostname,我们可以用ip来连接远程的电脑,如果有hostname岂不是更加方便. boujour的服务有三部分,注册服务,查看服务和解析服务.其中注册服务主要在server实现,查看和解析服务就是在client实现. 注册服务:就是把自己要启动的服务放到守护进程中. 查看服务:顾名思义就是查看当前的局域网内有哪些

Visual Studio Xamarin提示Bonjour backend初始化失败

Visual Studio Xamarin提示Bonjour backend初始化失败 错误信息:The Bonjour backend failed to initialize, automatic Mac Build server discovery will not be available.这是由于Windows下的Bonjour服务没有开启,需要到服务管理中,开启该服务,即可.

iOS- 如何使用Apple的零配置网络协议Bonjour?

1.前言 这段时间为了解决公司App的网络离线需求,做了个Apple推出的零配置网络协议Bonjour的Test,主要是为了解决iOS设备的IP获取,之前是可以使用socket的广播来实现,但是使用Apple推出的Bonjor相比会更加简单和稳定.希望能对大家有点帮助,如果有什么地方有error也欢迎大家指出,互相学习. 这是之前写过的一篇关于socket的blog——socket广播 iOS- 移动端Socket UDP协议广播机制的实现 2.什么是Bonjour?能做些什么? 相信没有了解过

iOS中解析Bonjour服务(转)

服务器端Bonjour服务发布成功之后,客户端可以通过NSNetService解析服务,解析成功后,可以获得通讯的数据细节,如:IP地址.端口等信息. 首先需要实例化NSNetService对象代码如下: -(id)init { _service = [[NSNetService alloc] initWithDomain:@”local.” type:@”_tonyipp._tcp.” name:@”tony”]; [_service setDelegate:self]; //设置解析地址超时

局域网设备发现之Bonjour协议

本文由嵌入式企鹅圈原创团队成员-华南师范大学物联网创新中心Hende_Zhu先生执笔. WIFI物联网解决方案中,通常我们需要对设备进行绑定,需要通过某种方法先对设备进行发现,比如微信硬件采用广播的方式,定时向外发送上线消息或者采用一问一答的方式进行发现,Bonjour是由苹果公司实现的一种零配置网络(Zeroconf)协议,它是一种基于服务的设备发现协议,不仅能够自动获取有效IP地址,还可以通过查询服务的方式来找到设备地址,只要双方约定好服务(service)的名称,设备的IP地址和端口都是可

Visual Studio提示Bonjour backend初始化失败

Visual Studio提示Bonjour backend初始化失败 错误信息:The Bonjour backend failed to initialize, automatic Mac Build server discovery will not be available.这是由于Windows下的Bonjour服务没有开启,需要到服务管理中,开启该服务,即可.

Git 中级用户的25个小贴士

原文链接:25 Tips for Intermediate Git Users 作者:Andy Jeffries 时间:2009年11月1日 更新:这篇文章最初是在 2009年11月 发布到我的博客,它一直没有更新--不过有许多人发现这篇文章很有用,所以我想保持下去.请不要评论说"这些已经不再是中级小贴士了". 我使用 git 大约 18 个月了,以为自己已经比较了解 git 了.但当我们请 GitHub 的 Scott Chacon 来 LVS 公司(博彩/游戏软件开发商)做一些培训

什么是编程言语

进修编程言语之前,起首要搞清晰"编程言语"这个概念.很小的时分,怙恃就教我们启齿措辞,也教我们若何了解他人讲话的意思.经由长工夫的陶冶和自我进修,我们居然在不知不觉中学会了措辞,同时也能听懂其他小冤家措辞的意思了,我们开端向怙恃要零花钱买零食和玩具.被欺侮了向怙恃倾吐--我们说的是汉语,是"中国言语",只需把我们的需哀告诉怙恃,怙恃就会知足,我们用"中国言语"来掌握怙恃,让怙恃做我们爱好的工作."中国言语"有固定的格局,每一个