ios - Windows dns-sd (Bonjour/ZeroConf) 没有通过 USB 发现 iPhone 服务
问题描述
我有一个 Bonjour _http._tcp。在 iPhone 上发布的服务。在 iPhone Wifi关闭的情况下;在 MacBook 的终端上运行以下 dns-sd 命令:
dns-sd -B _services._dns-sd._udp
然后用 USB Lighting 电缆将 iPhone 连接到 MacBook,dns-sd 会发现以下 iPhone 服务:
Timestamp A/R Flags if Domain Service Type Instance Name
19:22:45.126 Add 3 5 . _tcp.local. _http
从 MacBook 上断开 USB Lighting 电缆会显示:
Timestamp A/R Flags if Domain Service Type Instance Name
19:22:45.126 Add 3 5 . _tcp.local. _http
19:23:53.924 Rmv 1 5 . _tcp.local. _http
但是,在 Windows 10 PC 上重复上述步骤(运行 dns-sd,连接和断开 USB Lighting 到 PC),dns-sd没有发现该服务。
使用 iPhone Wifi On,PC 上的 dns-sd 会发现 iPhone 服务:
Timestamp A/R Flags if Domain Service Type Instance Name
19:32:36.238 Add 2 13 . _tcp.local. _http
当 iPhone Wifi 关闭时,PC 上的 dns-sd 会显示:
Timestamp A/R Flags if Domain Service Type Instance Name
19:32:36.238 Add 2 13 . _tcp.local. _http
19:33:38.471 Rmv 0 13 . _tcp.local. _http
我从https://developer.apple.com/download/more/?=Bonjour%20SDK%20for%20Windows; 安装了 Bonjour SDK v333.10;并且 iTunes 在 PC 上也可以正常工作(可以显示 iPhone)。
为什么 PC 上的 dns-sd (Bonjour/ZeroConf) 没有通过 USB 发现 iPhone 服务?
非常感谢。
解决方案
Bounjour 通信是基于 Socket 的。当 iPhone 通过 USB 数据线连接到 MacBook 时,MacBook 会为 iPhone 分配一个私有 IP 地址 (169.254.xx)。
在 MacBook 上使用Discovery - DNS-SD 浏览器,当 iPhone 的 wifi 关闭时,Discovery 通过 USB 显示发现的 Bonjour 服务,并带有私有 IP 地址:
当 iPhone 的 wifi 开启时,Discovery 将显示已发现的 Bonjour 服务以及两个 IP 地址(一个 wifi 和一个 USB):
因此, MacBook 上的 dns-sd能够在没有 wifi 的 iPhone 上发现该服务。
推荐阅读
- r - 在 R 中使用 MODISTools 找不到函数“validate_key”
- c# - 如何使用参数为范围的 C# Visual Studio 创建 excel 自定义函数
- reactjs - 为什么 this.setState 在 componentDidUpdate 钩子中不能正常工作。感觉像异步问题,但不知道如何处理
- json - Merging duplicated data objects from the response
- c# - Sending mail with SMTP server owned by ABV.BG return timeout exception?
- java - Is there a smarter way to check if a User liked a Location in my example?
- jquery - how to jquery ajax json response for loop / django
- azure - 由于“ClientSecretCredential”问题,无法执行 Azure ARM 部署
- ruby-on-rails - Count rails 控制器时序
- javascript - 从带有点的键的对象创建对象