我正在使用Bonjour的dns-sd api构建客户端。我注意到有一个名为kDNSServiceFlagsShareConnection的标志,它用于共享一个DNSServiceRef的连接。使用kDNSServiceFlagsShareConnections共享DNSServiceRef阻止我的程序
苹果网站说
为了提高效率,执行许多并发操作的客户可能要使用而不必为每个独立操作一个单独的连接与后台守护一个Unix域套接字连接。要使用此模式,客户端首先调用DNSServiceCreateConnection(& MainRef)来初始化主DNSServiceRef。对于每个要共享同一连接的后续操作,客户端复制MainRef,然后传递该副本的地址,设置ShareConnection标志以告知库,该DNSServiceRef不是典型的未初始化的DNSServiceRef;它是现有DNSServiceRef的副本,其连接信息应该被重用。
甚至还有一个例子说明如何使用该标志。我遇到的问题是,当我运行程序时,它就像等待某件事情,只要我用标志调用一个函数。这里是代码:
DNSServiceErrorType error;
DNSServiceRef MainRef, BrowseRef;
error = DNSServiceCreateConnection(&MainRef);
BrowseRef = MainRef;
//I'm omitting when I check for errors
error = DNSServiceBrowse(&MainRef, kDNSServiceFlagsShareConnection, 0, "_http._tcp", "local", browse_reply, NULL);
// After this call the program stays waiting for I don't know what
//I'm omitting when I check for errors
error = DNSServiceBrowse(&BrowseRef, kDNSServiceFlagsShareConnection, 0, "_http._tcp", "local", browse_reply, NULL);
//I'm omitting when i check for errors
DNSServiceRefDeallocate(BrowseRef); // Terminate the browse operation
DNSServiceRefDeallocate(MainRef); // Terminate the shared connection
任何想法?想法?建议?