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

最新文章

  1. NoSQl简介(转)
  2. @SuppressWarnings的使用、作用、用法
  3. Ruby调用Excel相关的函数
  4. 使用一个封装的json删除方法
  5. select2美化下拉单
  6. C# 短信猫(SMS cat) 操作源码开发经验
  7. 使用DataReader
  8. Jq超链接提示
  9. html5 Canvas处理图像 实例讲解
  10. 1.1 sikuli 安装
  11. mysql 中的socket 即 mysql.sock的作用
  12. 【Vue】定义组件 data 必须是一个函数返回的对象
  13. restricted 模式及其 使用
  14. HTML里面form表单name,action,method,target,enctype等属性用法
  15. Java基础语法<七> 对象与类 封装
  16. 详解Linux查看实时网卡流量的几种方式(转)
  17. HTML5和CSS3的一些学习记录
  18. eclipse 使用总结
  19. 常用chrome插件&&常用FireFox插件
  20. arm处理器启动流程分析

热门文章

  1. [CF911G]Mass Change Queries
  2. 1.2(Spring学习笔记)Spring中的Bean
  3. Interaction triggers in WPF
  4. struts-2-spring-2-jpa-ajax
  5. 11、Pickle序列化
  6. Spark下载与入门(Spark自学二)
  7. jquery 事件,注册 与重复事件处理
  8. java的IO操作:System类对IO的支持。
  9. (转)java 打印自身代码——真实世界不存在自指
  10. Pattern Recognition and Machine Learning 模式识别与机器学习