首页 > 解决方案 > 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 服务?

非常感谢。

标签: iosusbbonjourzeroconfdns-sd

解决方案


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 上发现该服务。


推荐阅读