Windows dns-sdBonjour / ZeroConf未通过USB发现iPhone服务

问题描述

我在iPhone上发布了Bonjour _http._tcp。 服务。使用iPhone Wifi 关闭;在MacBook的终端上运行以下dns-sd命令:

dns-sd -B _services._dns-sd._udp

然后使用USB照明电缆将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照明电缆将显示

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并断开与PC的连接), dns-sd 没有发现该服务。

使用iPhone Wifi 打开,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。通过USB电缆将iPhone连接到MacBook时,MacBook会为iPhone分配一个专用IP地址(169.254.x.x)。

使用MacBook上的Discovery - DNS-SD Browser,当iPhone的wifi处于关闭状态时,Discovery通过USB显示发现的Bonjour服务,并具有专用IP地址: enter image description here

当iPhone的wifi开启时,发现将显示具有两个IP地址(一个wifi和一个USB)的发现的Bonjour服务: enter image description here

因此,MacBook上的 dns-sd 能够在没有wifi的iPhone上发现该服务。