カスタム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を取得することはありません。誰かが解決策を持っていますか?