2013-11-04 36 views
1

我注册使用DNSServiceBrowse列出了相同的服务两次,不同interfaceIndex

DNSServiceRegister(&dnssref, 0, 0, "Fortune Server on my-PC", "_trollfortune._tcp", 0, 0, bigEndianPort, 0, 0, 0, 0); 

一个Bonjour服务然后我浏览它使用

DNSServiceBrowse(&dnssref, 0, 0, "_trollfortune._tcp", 0, bonjourBrowseReplyCallback, this); 

callback function被称为两次,用相同的serviceName,regTypereplyDomain,只有interfaceIndex不同,第一次是20,第二次是10000010if_indextoname()为两者返回ethernet_12

与此同时,Bonjour Browser(我在互联网上找到的工具)显示我的服务仅列出一次。

我用错误的参数调用DNSServiceBrowse吗?

+0

我有同样的问题。这真的很奇怪,因为在“某事”之前只有一个回调被调用。 –

回答

1

我发现问题在我的情况。

安装VMware后开始出现问题。它创建了一些虚拟网络接口。禁用这些接口后,浏览器只显示一个结果。

但我认为这个问题与浏览无关。我认为这个问题是与标志kDNSServiceInterfaceIndexAny(0 - 3参数)发送到功能DNSServiceBrowse或许你需要将接口设置为一个固定值,而不是0

0

我发现有一个名为dns-sd的Bonjour附带的命令行工具,您可以使用它注册/浏览服务。

我注册使用

dns-sd -R "Fortune Server on my-PC" _trollfortune._tcp local 1234 

,并进行浏览,用命令

dns-sd -B _trollfortune._tcp 

给我下面的输出服务:

Browsing for _trollfortune._tcp 
Timestamp  A/R  Flags if  Domain     Service Type    Instance Name 
19:48:23.674 Add  3  20  local.     _trollfortune._tcp.  Fortune Server on my-PC 
19:48:23.674 Add  2  10000010 local.     _trollfortune._tcp.  Fortune Server on my-PC 

由于自带的标准工具Bonjour列出服务两次,我想这是正常的行为。

相关问题