0

iOS で Banjour ベースのアプリケーションを実装しようとしています。あるiPhoneから別のiPhoneへのデータの送受信にも成功を完全に実装しています。サービスを閲覧した後、作業中の他のすべてのデバイス。テーブルに表示します。

ここに画像の説明を入力

テーブルビューでいくつかのデバイスを選択し、選択したデバイスにデータを送信したい

ここに画像の説明を入力

そのために、各デバイスにソケットを1つだけ作成しました。

CFSocketContext socketCtxt = {0, self, NULL, NULL, NULL};   
    witap_socket = CFSocketCreate(kCFAllocatorDefault, PF_INET6, SOCK_STREAM, IPPROTO_TCP, kCFSocketAcceptCallBack, (CFSocketCallBack)&TCPServerAcceptCallBack, &socketCtxt);

    if (witap_socket != NULL)        
    {
        protocolFamily = PF_INET6;
    }
    else 
    {
        witap_socket = CFSocketCreate(kCFAllocatorDefault, PF_INET, SOCK_STREAM, IPPROTO_TCP, kCFSocketAcceptCallBack, (CFSocketCallBack)&TCPServerAcceptCallBack, &socketCtxt);        
        if (witap_socket != NULL)
        {
            protocolFamily = PF_INET;
        }
    }    

選択したデバイスにデータを送信したいと考えています。そのために、選択した NSNetService (つまりデバイス) を別の NSMutableArray に保存しました。使用する場合 送信ボタンをクリックすると、特定のアクションが呼び出されます。

-(void)SendActionFunction
{   
       for(int idx=0;idx<[selectedSer count];idx++)
    {
        NSNetService *service = [self.selectedSer objectAtIndex:idx];  
        NSLog(@"service......%@",[service name]);
        self.currentResolve = [self.selectedSer objectAtIndex:idx]; 
        [self.currentResolve setDelegate:self];     
        [self.currentResolve resolveWithTimeout:0.0];
    }
}

各デバイスのアドレスを解決しようとしている場合(上記のコード)。最初のデバイスでのみ解決されます。そしてエラーが発生する

  • (エラーコード=-72003]

Tableviewから自動的に削除されるデバイスのアドレスを解決した場合、もう1つの問題があります。

だから私の疑問は次のとおりです。

  1. 選択したデバイスが取り消されたのはなぜですか?
  2. TCP ベースのソケットを作成します。データを送信する宛先アドレスを追加するにはどうすればよいですか?
  3. 単一のソケットから複数の宛先にデータを送信することは可能ですか?
4

2 に答える 2

0

1 デバイスにつき 1 デバイスのデータを解決して送信するのはどうですか? 簡単に聞こえます:D

ところで、プロジェクトに使用した本当に素晴らしいソケット ライブラリがあります。

https://github.com/robbiehanson/CocoaAsyncSocket

于 2013-04-26T15:07:10.303 に答える
0

Apple の定義によると、CFSocket は BSD ソケットで実装された通信チャネルです。

デバイス間のソケット接続が確立されました。ただし、データの送受信には、NSStreams を利用する必要があります。ドキュメントはここにあります

Apple のサンプルコード Witap を参考にされているようですね。

データの送受信には、NSStreamDelegateも使用します。

于 2012-06-18T12:21:23.353 に答える