NSNetService表示已发布,但在网络上不可见
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NSNetService表示已发布,但在网络上不可见相关的知识,希望对你有一定的参考价值。
我正在为自己使用(至少是最初使用)一个小的ios应用程序,我想我会使用Bonjour在两个iOS设备之间配置网络。我的服务器的界面定义
NSNetService *netService;
并且该实现使用以下代码来宣传其存在:
const NSString *kSEBonjourServiceDomain = @""; //use defaults
const NSString *kSEBonjourServiceName = @"_test._tcp.";
//...
netService = [[NSNetService alloc] initWithDomain:(NSString *)kSEBonjourServiceDomain type:(NSString *)kSEBonjourServiceName name:@"" port:sin.sin_port];
if (netService)
netService.delegate = self;
netService.includesPeerToPeer = YES;
[netService publish];
else NSLog(@"Failed to create NSNetService");
当启动服务器时,我的NSNetService对象确实调用-netServiceDidPublish:委托方法,但是当我使用Discovery浏览我网络上的bonjour服务时,我的服务没有出现。除了const字符串外,此代码与我的一个Mac应用程序中的某些代码相同(可以正常工作),并且与Apple的示例代码非常相似。万一需要在此处添加某些内容,我已经浏览了Xcode功能选项卡中的所有选项,但看不到任何相关内容。我还阅读了许多文档和教程,它们没有提到要做更多的事情,但是如果您将晦涩的构建设置设置为一个字符串,并且仅在iOS上运行,这也就不足为奇了。您必须通过阅读去年9月的watchOS人机接口指南来了解有关内容。那么,有人能启发我吗?我想念什么?预先感谢!
事实证明,由于我代码中其他地方的愚蠢错误,在我注册NSNetService时,sin.sin_port设置为0。尽管NSNetService认为这不是问题,但它导致该服务被服务浏览器忽略。因此答案是,端口为0的服务将正确注册,但将无法工作。感谢gaige的协助。
以上是关于NSNetService表示已发布,但在网络上不可见的主要内容,如果未能解决你的问题,请参考以下文章
DAG 在 Google Cloud Composer 网络服务器上不可点击,但在本地 Airflow 上运行良好