NSNETServiceBrowser找不到存在的服务



我有一个自定义可可(OSX)服务器和客户端,并且服务器发布了Bonjour服务。我使用NSNetServiceBrowser搜索客户端,但我从未得到任何结果。我知道该服务之所以发布,是因为它在mdns -B _myservicetype._tcp的输出中。我的搜索和发布代码既搜索和发布又有相同的域,名称和类型,并且几乎与Apple样本代码相同。这是发布代码:

service = [[NSNetService alloc] initWithDomain:@"" type:@"_scijs._tcp" name:@"ScienceJeopardyServer" port:4567];
[service publish];

这是搜索和委托方法:

[sbrows setDelegate:self];
[sbrows searchForServicesOfType:@"_scijs._tcp" inDomain:@""];

这是委托方法:

-(void)netServiceBrowserWillSearch:(NSNetServiceBrowser *)aNetServiceBrowser {
    [self.statusLabel setStringValue:@"Searching for server..."];
    [self.serverIndicator setHidden:NO];
    [self.serverIndicator startAnimation:self];
}
-(void)netServiceBrowser:aNetServiceBrowser didNotSearch:(NSDictionary *)errorDict {
    [self.statusLabel setStringValue:@"Error finding server."];
    [self.serverIndicator stopAnimation:self];
    [self.serverIndicator setHidden:YES];
}
-(void)netServiceBrowserDidStopSearch:(NSNetServiceBrowser *)aNetServiceBrowser {
    [self.serverIndicator stopAnimation:self];
    [self.serverIndicator setHidden:YES];
}
-(void)netServiceBrowser:(NSNetServiceBrowser *)aNetServiceBrowser didFindService:(NSNetService *)aNetService moreComing:(BOOL)moreComing {
    [aNetServiceBrowser stop];
    NSLog(@"Found server.");
    [self.statusLabel setStringValue:@"Resolving service..."];
    [aNetService setDelegate:self];
    [aNetService resolveWithTimeout:10.0];
}

大部分只是GUI代码和NSlogs,但我从未得到GUI更改或NSlogs。有人有解决方案吗?

机会在您的客户中。

  1. 在委托方法中设置断点。
  2. 确保sbrows不会掉落范围。如果它脱离了范围willsearch被调用,则没有其他答复。

相关内容

  • 没有找到相关文章