gpt4 book ai didi

cocoa - NSNetService 说它已发布,但在网络上不可见

转载 作者:行者123 更新时间:2023-12-03 18:07:36 27 4
gpt4 key购买 nike

我正在开发一个供我自己使用的小型 iOS 应用程序(至少最初是这样),我想我会使用 Bonjour 来配置两个 iOS 设备之间的网络。我的服务器的接口(interface)定义

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: 委托(delegate)方法,但是当我使用 Discovery 浏览网络上的 bonjour 服务时,我的服务不会出现。除了 const 字符串之外,此代码与我的一个 Mac 应用程序中的某些代码相同(按预期工作),并且与 Apple 的示例代码非常相似。我已经浏览了 Xcode 功能选项卡中的所有选项,以防我需要在其中添加某些内容,但我看不到任何相关内容。我还阅读了一堆文档和教程,其中没有提到必须做更多的事情,但如果您将一个晦涩的build设置设置为一个字符串,这仅适用于 iOS,我不会感到惊讶。你必须通过去年 9 月阅读 watchOS 的人机界面指南来了解这一点。那么,有人可以启发我吗?我缺少什么?提前致谢!

最佳答案

事实证明,由于我的代码中其他地方出现了愚蠢的错误,当我注册 NSNetService 时,sin.sin_port 被设置为 0。尽管 NSNetService 不认为这是一个问题,但它导致服务被服务浏览器忽略。所以答案是,端口为 0 的服务可以正常注册,但无法工作。感谢 gaige 的帮助。

关于cocoa - NSNetService 说它已发布,但在网络上不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61172201/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com