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,但是不能反过来。

bonjour的使用的更多相关文章

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

    Bonjour就是这样一种技术:设备可以通过它轻松探测并连接到相同网络中的其他设备,整个过程只需要很少的用户参与或是根本就不需要用户参与.该框架提供了众多适合于移动的使用场景,如基于网络的游戏,设备间 ...

  2. Visual Studio提示Bonjour backend初始化失败

    Visual Studio提示Bonjour backend初始化失败 错误信息:The Bonjour backend failed to initialize, automatic Mac Bui ...

  3. iOS--NSNetService和NSNetServiceBrowser(Bonjour网络编程)

    Cocoa 网络框架: Cocoa 网络框架有三层,最底层的是基于 BSD socket库,然后是 Cocoa 中基于 C 的 CFNetwork,最上面一层是 Cocoa 中 Bonjour.通常我 ...

  4. bonjour

    首先bonjour并非必须的,可是它的确非常方便,假设没有它我们须要指定ip地址进行局域网的传输,有了它就能够依据服务的详细的名称来选择服务,能够这样来理解bonjour就相当于hostname,我们 ...

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

    Bonjour就是这样一种技术:设备可以通过它轻松探测并连接到相同网络中的其他设备,整个过程只需要很少的用户参与或是根本就不需要用户参与.该框架提供了众多适合于移动的使用场景,如基于网络的游戏,设备间 ...

  6. bonjour browser 下载

    在Mac 上叫 Bonjour Browser http://www.macupdate.com/app/mac/13388/bonjour-browser/download IOS 上的 app 叫 ...

  7. iOS- Apple零配置网络协议Bonjour的使用?

    1.前言 这段时间为了解决公司App的网络离线需求,做了个Apple推出的零配置网络协议Bonjour的Test,主要是为了解决iOS设备的IP获取,之前是可以使用socket的广播来实现,但是使用A ...

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

    Visual Studio Xamarin提示Bonjour backend初始化失败 错误信息:The Bonjour backend failed to initialize, automatic ...

  9. iOS中解析Bonjour服务(转)

    服务器端Bonjour服务发布成功之后,客户端可以通过NSNetService解析服务,解析成功后,可以获得通讯的数据细节,如:IP地址.端口等信息. 首先需要实例化NSNetService对象代码如 ...

随机推荐

  1. 开启关闭Centos的自动更新(转)

    开启关闭Centos的自动更新 关闭Centos的自动更新,操作记录如下: [root@jwbdb alpha]# chkconfig –list yum-updatesd yum-updatesd  ...

  2. 微服务之SpringCloud实战(五):SpringCloud Eureka详解

    Eureka详解 在第三节高可用中,实际已经讲解了服务的注册,只不过注册的是Eureka本身,原理相同,通过这几篇文章我相信大家对Eureka有了一定的了解,三个核心角色:服务注册中心.服务提供者和服 ...

  3. URL 和URI的区别

    1.统一资源标志符URI就是在某一规则下能把一个资源独一无二地标识出来. URL:(Uniform/Universal Resource Locator 的缩写,统一资源定位符). URI:(Unif ...

  4. 使用WinDbg调试SQL Server——入门:Woodytu

    http://www.cnblogs.com/woodytu/p/4663525.html https://www.sqlpassion.at/archive/2014/05/13/debugging ...

  5. Word中对象显示不完整

    选中上下文字后,右键没有段落,如果是图片的话是有的,那么我们可以点击菜单栏中段落的右下三角,在那设置单倍行距.

  6. 阿里云乌班图16配置-PHP环境(包括mysql及apache安装)

    1. 安装apache  apt-get update apt-get install apache2 service apache2 restart   通过浏览器访问服务器的IP,如果出现Apac ...

  7. SqlServer 执行计划及Sql查询优化初探

    网上的SQL优化的文章实在是很多,说实在的,我也曾经到处找这样的文章,什么不要使用IN了,什么OR了,什么AND了,很多很多,还有很多人拿出仅几S甚至几MS的时间差的例子来证明着什么(有点可笑),让许 ...

  8. IDEA默认VIM模式

    Intellij Idea, 每次打开文件都进入了vim模式,必须输入i才可编辑,实在是非常困扰. 终于找到了解决办法:取消Vim Emulator的选择:

  9. angular—— Dynamic Templates

    原文:http://davidcai.github.io/blog/posts/router-dynamic-templates/ ui-router : templateProvider vs te ...

  10. Eclipse+Maven远程部署项目到Tomcat中

    使用maven的自动部署功能可以很方便的将maven工程自动打包并且部署到远程tomcat服务器,省去一些繁琐的操作,节省大量时间. 我使用的tomcat版本是8.5,tomcat7和tomcat8都 ...