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つの問題があります。
だから私の疑問は次のとおりです。
- 選択したデバイスが取り消されたのはなぜですか?
- TCP ベースのソケットを作成します。データを送信する宛先アドレスを追加するにはどうすればよいですか?
- 単一のソケットから複数の宛先にデータを送信することは可能ですか?