首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSNetService:在发布服务时处理名称冲突

NSNetService:在发布服务时处理名称冲突
EN

Stack Overflow用户
提问于 2015-07-01 11:50:28
回答 1查看 649关注 0票数 0

根据苹果的文档

如果该服务名称与网络上的现有服务冲突,Bonjour将选择一个新名称。..。如果服务与网络上现有服务的名称发生冲突,则将自动重命名它。

我怎样才能实现这个功能?

我的实施:

代码语言:javascript
复制
self.publishService = [[NSNetService alloc] initWithDomain:@"local." type:@"_http._tcp." name:@"MyName" port:80];
self.publishService.delegate = self;
[self.publishService publish];

- (void)netServiceDidPublish:(NSNetService *)sender {
    NSLog(@"did publish: %@", sender.name);
}

- (void)netService:(NSNetService *)sender didNotPublish:(NSDictionary *)errorDict {
    NSLog(@"did not publish: %@", errorDict);
}

当此服务已经发布时,将调用didNotPublish委托方法。我想这个服务不会发布吧?

我认为应该再次调用带有新名称的服务的netServiceDidPublish:委托方法,但事实并非如此。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-19 15:30:25

这里的问题是端口,而不是名字。

如果存在名称冲突,它会通过将" (2)"附加到名称中来自动重命名服务,从而尽可能地增加服务的数量。在本例中,它将成功发布并调用netServiceDidPublish:

如果端口已经被另一个已发布的服务使用,它将不会发布它,并将调用netService:didNotPublish:,并将错误字典设置为NSNetServicesErrorCode = 48; NSNetServicesErrorDomain = 1;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31160479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档