1

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

4

1 に答える 1

2

クライアントにある可能性があります。

  1. デリゲート メソッドにブレークポイントを設定します。
  2. sbrows範囲外でないことを確認してください。範囲外の場合、willSearch が呼び出され、他の応答はありません。
于 2012-11-11T19:24:33.177 に答える