我有一个定制的Cocoa (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];
}其中大部分只是图形用户界面代码和NSLogs,但我从来没有得到图形用户界面的变化或NSLogs。有谁有解决方案吗?
发布于 2012-11-12 03:24:33
很有可能它就在你的客户身上。
sbrows没有超出作用域。如果它不在作用域之外,则不会调用willSearch,则不会有其他响应。https://stackoverflow.com/questions/13332965
复制相似问题