2013-02-21 84 views
2

我有一个代码CocoaHTTPServer,它使用Bonjour发布服务。并且为此使用NSNetService。NSNetService是否仅适用于.local域?

如果您定义了域“.local”,它可以正常工作(在OS X和iOS上)。但是,如果您定义了其他任何内容,则不会发布服务,也不会调用不发布服务器的委托。

我调查了这一点,发现以下信息。从NSNetService class

文档:

这个类和NSNetServiceBrowser类使用多播DNS来 传达有关网络服务,并从您 应用程序的信息。

Bonjour domain names

文档在卓悦系统,本地。用于指示在本地IP网络上使用IP多播查询应查找的名称 。

我是否正确理解NSNetService类只能与.local域一起工作,并且不能与广域bonjour(不同的域)一起工作?

P.S.如果我没有遗漏任何东西,我打算联系Apple,因为只有一个正确的值和所有其他不正确的错误(并且没有通过任何错误报告)的参数很奇怪。

回答

2

NSNetService可以与除local.以外的域一起工作。

在发布您的服务之前,请使用NSNetServiceBrowser- (void)searchForRegistrationDomains来查找合适的注册域。

Apple的NSNetServices和CFNetServices编程指南包含一个关于此的章节,其中包括示例代码:Browsing for Domains