当前位置: 首页 > news >正文

【Airplay_BCT】关于Bonjour的概念解答

1.什么是Bonjour?

Bonjour,也称为零配置网络,可以自动发现 IP 网络上的计算机、设备和服务。 Bonjour 使用行业标准 IP 协议,允许设备自动发现彼此,无需输入 IP 地址或配置 DNS 服务器。具体来说,Bonjour 可以在没有 DHCP 服务器的情况下自动分配 IP 地址,在没有 DNS 服务器的情况下进行名称到地址的转换,以及在没有目录服务器的情况下进行服务发现。 Bonjour 是一个开放协议,Apple 已将其作为正在进行的标准创建过程的一部分提交给 IETF。要了解更多信息,请查看 Bonjour 协议规范,其中详细介绍了构成链路本地和广域 Bonjour 的技术。

2.什么是mDNSResponder?

mDNSResponder 是一个 Bonjour 系统服务,它实现了用于发现本地网络上的服务的多播 DNS 服务发现和用于发现世界任何地方的服务的单播 DNS 服务发现。 mDNSResponder 内置于 OS X 和 iOS 中,可以作为 Windows 版 Bonjour 的一部分下载。 iTunes、iPhoto、Messages 和 Safari 等应用程序使用 mDNSResponder 实现零配置网络音乐共享、照片共享、聊天和文件共享,以及发现打印机和网络摄像头等硬件设备的远程用户界面。 mDNSResponder 还用于发现和打印到连接到 AirPort Extreme 和 Express 基站的 Bonjour 打印机和 USB 打印机。 mDNSResponder 是开源的,鼓励硬件设备制造商将 mDNSResponder 源代码直接嵌入到他们的产品中,以从零配置网络中获益

3. Bonjour 是否在多个子网之间工作?

是的。 OS X 的第一个 DNS 服务发现 (DNS-SD) 版本集中在单链路网络的多播 DNS (mDNS) 上,因为这是 IP 软件服务的最差环境。 Bonjour 使用动态 DNS 更新 (RFC 2316) 和单播 DNS 查询来启用广域服务发现。

4. 当我断开设备与网络的连接时,它是否仍然可见?

是的,有一段时间了。最终,DNS 记录达到其生存时间间隔并消失。作为APP开发者,如果你使用Bonjour连接主机,连接失败,你可以要求Bonjour重新确认记录。这个过程在 NSNetServices 和 CFNetServices 编程指南中有进一步的描述。

5. 我需要做什么才能在 iOS 中通过蓝牙支持 Bonjour?

在 iOS 5 及更高版本中,应用程序必须明确选择通过蓝牙进行服务发现,并且必须使用低级 DNS 服务发现 C API 解析服务。有关详细信息,请参阅 iOS 5 及更高版本上的蓝牙 Bonjour。

6. 我应该让服务浏览器运行多长时间?

浏览器会消耗资源,因此如果您不希望使用这些数据,则不应让它们继续运行。但是,在连接到服务时保持服务浏览器运行通常是个好主意。如果该连接失败,正在运行的浏览器的存在会促使 Bonjour 更积极地重新验证可能过时的服务条目,这可以使服务列表更加准确。

通常,如果您没有显示任何包含该列表的用户界面元素,并且您没有主动连接到任何服务,您应该停止浏览器。但是,这只是一般性建议;在任何情况下,您都应该尽一切可能为您的用户带来最佳体验。

7. Bonjour 是否支持“SOAP”RPC over HTTP?

是的。 Bonjour 定义了一种用于发现服务的新协议 (DNS-SD),但是,它对您发现的服务类型没有任何限制。因此,您可以像发现 Messages 好友和 iTunes 音乐库一样轻松地发现 SOAP 服务。换句话说,Bonjour 支持基于 HTTP 的 SOAP 以及在 TCP/IP 或 UDP/IP 之上分层的所有其他应用程序协议。

8. Bonjour 有订阅或通知机制吗?

是的。许多人似乎没有意识到 Bonjour 也进行通知的原因可能是因为它只是发现协议的固有属性。使用精心设计的发现协议,您用于发现某些信息的同一协议也可用于发现对该信息的更改。静态信息的发现,和可变信息的发现,以及可变信息何时发生变化的发现,都只是同一光谱上的不同点。有关使用 Bonjour“通知”的应用程序示例,请查看消息。当您将状态从“有空”更改为“离开”或输入状态消息时,本地网络上的所有其他消息客户端都会收到更改通知。

9、注册服务时,name参数应该传入什么?

默认情况下,您应该选择一个唯一描述服务的人类可读名称。例如,iTunes 通过组合计算机用户的名字和姓氏来选择默认的音乐共享名称,如“艾萨克·牛顿的音乐”。对于大多数硬件设备,默认服务名称应该是产品的完整品牌和型号。例如,类似“Apple MacBook Pro”的内容。请记住,这只是开箱即用的默认名称,应该允许用户自定义服务名称以区分网络上的多个设备或服务。

对于正在注册服务的 OS X 应用程序开发人员,在给定计算机上拥有该服务的一个实例可能是有意义的(而不是可能在多个帐户中运行的应用程序的每个实例一个)。在这种情况下,与其让您的应用程序呈现自己的用户界面供用户输入广告服务的名称,不如使用共享首选项中系统提供的默认名称(称为“计算机名称”)进行注册更为方便控制板。如果您在注册时为服务名称传入一个空字符串(“”),系统将自动使用“计算机名称”。传入一个空字符串也将通过自动在名称末尾附加一个数字来处理名称冲突。

但是,有些服务可以在同一台计算机上托管多个实例。例如,具有三台打印机的打印服务器应将每台打印机作为一流实体进行通告。每台打印机都应使用可有效识别打印机本身的描述性名称进行广告宣传。这一点很重要,因为名为“Marketing’s Transparency Printer”的打印机将来可能会转移到不同的打印服务器,但用户不必了解这些操作细节。他们仍然会看到以相同名称在网络上发布的相同服务,即使它现在位于不同的打印服务器上。

10、注册服务时“type”参数应该传入什么?

您必须传递“_applicationprotocol._transportprotocol”形式的字符串。当前“_transportprotocol”必须是“_tcp”或“_udp”。您的“应用程序协议”必须为 15 个字符或更少,并且应该在 IANA 注册,以便他们可以将您添加到已注册协议名称和端口号的列表中。请参阅 QA1312 以获取 OS X 使用的服务类型列表。

11、注册服务时domain参数应该传入什么?

如果您传递一个空字符串 (“”),那么您的服务将使用本地链路多播和用户选择的单播 DNS 域(如果适用)进行注册。

如果您传入“本地”,则您的服务仅使用链接本地多播注册,而不是在任何用户选择的单播 DNS 域中注册。

除了“本地”域之外,如果您有某些特殊原因想要在特定的远程域中注册您的服务,则只需传递特定的字符串。

12. 当网络中的两台设备都使用相同的服务名称时应该怎么办?

在极少数发生名称冲突的情况下,您的设备应在名称末尾添加一个数字,例如:“Apple Mac mini (2)”

调用 Bonjour API(如 DNSServiceRegister 和 CFNetServiceRegisterWithOptions)的应用程序和设备将在发生名称冲突时自动获得此名称更改行为。对于有屏幕且能够进行用户输入的设备,您可以选择提示用户输入一个更独特的名称,而不是附加数字。

13.TXT记录有什么用?

TXT 记录的具体性质及其使用方式取决于服务类型。每个服务类型将定义零个或多个名称/值对,用于存储有关每个服务的元数据。这些名称/值对的格式应如基于 DNS 的服务发现的第 6 节所述。

14. 用户在我的应用程序中浏览网络并选择他们希望使用的服务实例后,我应该将该 IP 地址保存在我的应用程序的首选项文件中,对吗?

错误的。这是一个常见的错误。使用 DHCP(以及链路本地寻址)假设服务实例明天将具有相同的 IP 地址是不安全的。地址可以改变。服务名称是服务实例的预期稳定标识符。将实例名称(名称、类型和域)保存在应用程序的首选项文件中,然后在用户每次访问该服务时按需解析它。另请注意,您不应该存储主机名和端口号,因为您不应该假设服务实例明天一定会在相同的端口号上运行。不是存储主机名,而是存储服务实例名称(名称、类型和域),然后当您在使用时解析服务实例名称时,您一定会获得最新的 IP 地址和端口号.

15. 我的硬件设备有一个用于配置的内置网络服务器。我应该使用 Bonjour 注册吗?

是的。您应该注册设备上运行的每项服务,例如 HTTP、FTP、SSH、Telnet。在 OS X 上,Safari 网络浏览器可以发现使用 Bonjour 公布的网络服务器,Windows 上的 Internet Explorer 可以在安装 Bonjour for Windows 后发现网络服务器。此外,OS X 中的终端应用程序可以发现 FTP、SSH 和 Telnet 服务器。

相关文章:

【Airplay_BCT】关于Bonjour的概念解答

1.什么是Bonjour? Bonjour,也称为零配置网络,可以自动发现 IP 网络上的计算机、设备和服务。 Bonjour 使用行业标准 IP 协议,允许设备自动发现彼此,无需输入 IP 地址或配置 DNS 服务器。具体来说,Bonjour …...

C++深入浅出(九)—— 多态

文章目录1. 多态的概念2. 多态的定义及实现🍑 多态的构成条件🍑 虚函数🍑 虚函数的重写🍑 虚函数重写的两个例外🍑 C11的override 和 final🍑 重载、覆盖(重写)、隐藏(重定义)的对比3. 抽象类🍑…...

shell学习4

目录 一、统计文本中的词频 二、压缩javascript 三、打印文件的或行中的第n个单词或列---awk 3.1 利用awk打印文件中每行中的第五个单词。 3.2 利用awk打印当前目录下的文件的权限和文件名 3.3 利用awk打印从M行到N行这个范围内的所有文本 3.4 利用awk 部分提取文件中的内…...

VR全景行业的应用价值如何呈现?

互联网高速发展的今天,多媒体所包含的种类也是越来越多,而一些较为传统的表现方式已经越来越无法满足大部分客户对展示方式的要求。而在传统的表现方式中,展现的方式无非是静态的平面图片以及动态的视频,但是他们都有一个缺点就是…...

ESP-IDF:TCP多线程并发服务器

核心代码&#xff1a; 核心思想就是主线程只处理socket监听功能&#xff0c;把数据处理部分分配到不同的线程中去处理。来了一个客户端连接&#xff0c;就分配新的线程去处理该客户端的数据请求。 代码&#xff1a; /多线程并发服务器/ #include <stdio.h> #include …...

Springboot扩展点之SmartInitializingSingleton

前言这篇文章会重点分析一下SmartInitializingSingleton扩展点的功能 特性、实现方式 、工作原理。SmartInitializingSingleton扩展点内只有一个扩展方法&#xff0c;且执行时机在Spring Bean的生命周期里比较靠后&#xff0c;很重要&#xff0c;但是也很简单。功能特性1、Smar…...

基于linux内核的驱动开发学习

1 驱动 定义&#xff1a;驱使硬件动起来的程序 种类&#xff1a;裸机驱动&#xff1a;需求分析--》查原理图--》查芯片手册--》code 系统驱动&#xff1a;需求分析--》查原理图--》查芯片手册--》设备树--》code --》安装到内核中…...

python3 django gunicorn

首先&#xff0c;Gunicorn是一个高效的Web服务器&#xff0c;地位相当于Java中的Tomcat。简单来说gunicorn封装了HTTP的底层实现&#xff0c;我们通过gunicorn启动服务&#xff0c;用户请求与服务相应都经过gunicorn传输。下载gunicorn的方法也比较简单&#xff0c;在django工程…...

专家分享 | 租赁型售楼处标准化示范区提效研究

2023年2月8日上午&#xff0c;优积科技邀请原金地集团北京公司 高级室内设计专业应锎经理为我司团队分享《租赁型售楼处标准化示范区提效》的专题。 此次专家分享课题加上大家踊跃讨论时间长达3小时&#xff0c;会上应总详细介绍了租赁型售楼处标准化示范区提效&#xff0c;需…...

linux之echo使用技巧

参考文章&#xff1a;linux基本功系列-echo命令实战一、echo 命令是什么&#xff1f;作用&#xff1a; echo命令能将指定文本显示在Linux命令行上&#xff0c;或者通过重定向符写入到指定的文件中。语 法&#xff1a;echo [-ne][字符串] / echo [–help][–version]补充说明&am…...

Keras实例教程(7)之构建模型的第三种方式

多年以前,在TensorFlow中搭建深度学习模型对于很多人来说其实仍然是比较困难的。相比之下,Keras作为独立于TensorFlow的一种深度学习框架则要简单很多。在TensorFlow与PyTorch的竞争中逐渐式微的情况下,TensorFlow团队终于宣布Keras将成为在tensorflow2.0中构建和训练模型的…...

【JUC并发编程】18 CopyOnWriteArrayList源码也就够看2分钟

文章目录1、CopyOnWriteArrayList概述2、原理 / 源码1&#xff09;构造函数2、add()3&#xff09;get()4&#xff09;remove()5&#xff09;iterator()1、CopyOnWriteArrayList概述 CopyOnWriteArrayList相当于线程安全的ArrayList&#xff0c;底层是一个可变数组。 特点如下…...

如何优雅的实现回调函数?

本篇文章又是一期优雅的代码编程介绍———回调函数。 传统的nodejs编程都是这样的 const fs require(fs) fs.readFile(test.txt,utf8, function(err, dataStr){if(err){} }) 嵌套层级如果多了就成回调地狱了。如果我们将这种风格的代码转换成这样呢&#xff1f; const fs …...

3GPP-NR Band20标准定义频点和信道(3GPP V17.7.0 (2022-12))

Reference test frequencies for NR operating band n20 Table 4.3.1.1.1.20-1: Test frequencies for NRoperating band n20 and SCS 15 kHz CBW [MHz]carrierBandwidth...

Excel表格的公式不想显示出来,可以这样操作

在制作Excel表格的时候&#xff0c;很多人做数据会用到函数公式&#xff0c;这些编辑都是默认可以看到的。 但有时候我们不想让他人看到自己的计算思路和所用公式&#xff0c;有没有办法可以隐藏公式&#xff0c;只显示数据呢&#xff1f;答案是肯定的&#xff0c;今天我们就来…...

【零基础入门前端系列】—语义化标签、实体字符、视频、音频(八)

【零基础入门前端系列】—语义化标签、实体字符、视频、音频&#xff08;八&#xff09; 一、什么是HTML语义化标签 语义化的标签&#xff0c;旨在让标签有自己的含义 如上代码&#xff1a;p标签与span标签的区别之一就是&#xff0c;p标签的含义是段落而span标签没有独特的…...

超详细讲解线性表和顺序表!!

超详细讲解线性表和顺序表&#xff01;&#xff01;线性表顺序表顺序表的概念及结构静态顺序表动态顺序表顺序表接口实现1、创建2、初始化3、扩容4、尾插5、打印6、销毁7、尾删8、头插9、头删10、插入任意位置11、删除任意位置12、查找13、修改线性表 线性表&#xff08;linea…...

大数据之-Nifi-Nifi的安装_启动_认识Nifi的操作台---大数据之Nifi工作笔记0002

然后我们看一下如何安装nifi 这个上一节已经说了 然后看一下环境准备,这个自己去安装就可以了,需要jdk,1.8就可以了,然后 maven安装上就可以了 然后去下载,这里下载Linux版本的 1.9.2的版本比较稳定 下载以后,避免端口冲突要修改端口默认是8080,修改为58080 然后启动很简单,看…...

【大数据clickhouse】clickhouse 常用查询优化策略详解

一、前言 在上一篇我们分享了clickhouse的常用的语法规则优化策略&#xff0c;这些优化规则更多属于引擎自带的优化策略&#xff0c;开发过程中只需尽量遵守即可&#xff0c;然而&#xff0c;在开发过程中&#xff0c;使用clickhouse更多将面临各种查询sql的编写甚至复杂sql的…...

【Java项目】基于Java+MySQL+Tomcat+maven+Servlet的个人博客系统的完整分析

✨哈喽&#xff0c;进来的小伙伴们&#xff0c;你们好耶&#xff01;✨ &#x1f6f0;️&#x1f6f0;️系列专栏:【Java项目】 ✈️✈️本篇内容:个人博客系统前后端分离实现&#xff01; &#x1f680;&#x1f680;个人代码托管github&#xff1a;博客系统源码地址&#xff…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具&#xff0c;可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件&#xff0c;也不需要在线上传文件&#xff0c;保护您的隐私。 工具截图 主要特点 &#x1f680; 快速转换&#xff1a;本地转换&#xff0c;无需等待上…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...

LRU 缓存机制详解与实现(Java版) + 力扣解决

&#x1f4cc; LRU 缓存机制详解与实现&#xff08;Java版&#xff09; 一、&#x1f4d6; 问题背景 在日常开发中&#xff0c;我们经常会使用 缓存&#xff08;Cache&#xff09; 来提升性能。但由于内存有限&#xff0c;缓存不可能无限增长&#xff0c;于是需要策略决定&am…...