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 上运行良好

网络显示已连接不可上网是怎么回事

iOS中解析Bonjour服务(转)

数字基础设施已成新趋势:云原生数据库如何解决中小企业上云关键问题

php 在一台机器上解析失败,但在另一台机器上解析失败

校园网连不上怎么办?