iPhone (サーバー) でサービスを公開しようとしましたが、コードがNSNetService
オブジェクトのデリゲート メソッドに遭遇しました。
-(void)netServiceDidPublish:(NSNetService *)sender
したがって、私のサービス@"_chatty._tcp."
は正常に公開されたと思います。次に、別の iPhone (クライアント) でNSNetServiceBrowser
、サービスを見つけるために使用しましたが、デリゲート メソッドには実行されませんでした。
-(void)netServiceBrowser:(NSNetServiceBrowser *)netServiceBrowser didFindService:(NSNetService *)netService moreComing:(BOOL)moreServicesComing
このサイトで私のケースに関連するいくつかの質問を見つけました。ほとんどの回答は、デリゲート オブジェクトが範囲外かどうかを確認することを思い出させます。次のような別のデリゲートメソッドに遭遇したため、私のデリゲートはうまく機能すると確信しています。
-(void)netServiceBrowserWillSearch:(NSNetServiceBrowser *)aNetServiceBrowser
誰かが理由を見つけるのを手伝ってくれますか?
ここに私のコードのいくつかの部分があります:
私はそのようにサービスを開始します:
#define MY_PROTOCOL @"_chatty._tcp."
self.myService = [[NSNetService alloc]
initWithDomain:@"" type:MY_PROTOCOL
name:@"thaith" port:self.port];
ポートは Browser クラスの特定の listenSocket で初期化されます。
NSNetServiceBrowser* finder = [[NSNetServiceBrowser alloc] init];
//I also retain the finder.
finder.delegate = self;
[finder searchForServicesOfType:MY_PROTOCOL inDomain:@""];