【发布时间】:2012-11-11 16:15:16
【问题描述】:
我有一个自定义的 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];
}
其中大部分只是 GUI 代码和 NSLogs,但我从未得到 gui 更改或 NSLogs。有人有解决办法吗?
【问题讨论】:
标签: objective-c macos bonjour nsnetservicebrowser