2

現在、GCDAsyncUdpSocketを使用して、iOSデバイス間でwifi経由でマルチキャストデータグラムを送信しています。

コードは非常に単純です。

クライアント

self.socket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self  delegateQueue:dispatch_get_main_queue()];

//omitted error checking
[self.socket bindToPort:12345 error:&err];
[self.socket joinMulticastGroup:@"224.0.1.1" error:&err];
[self.socket beginReceiving:&err];

サーバ

self.multicastSocket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];

NSData *d = [@"hello" dataUsingEncoding:NSUTF8StringEncoding];

[self.multicastSocket sendData:d toHost:@"224.0.1.1" port:12345 withTimeout:-1 tag:11];

これはwifiでうまく機能します。Bluetoothでも動作させるにはどうすればよいですか?たくさんグーグルで検索しましたが、何も見つかりません... 2つの別々のソケットを作成する必要がありますか?1つはwifiインターフェースにバインドされ、もう1つはbluetoothインターフェースにバインドされていますか?

編集:または私は何か基本的なことについて混乱していますか?これは可能でなければなりません。GameKitのGKSessionはまさにこれを行いますよね?

4

2 に答える 2

1

あなたはとても近くにいます。この StackOverflow の質問で役立つ情報へのポインタを見つけるか、この機能をラップするHHServicesなどのライブラリを使用できます。

正直なところ、このルートを試してみましたが、ほとんど運がありませんでしたが、これがあなたを正しい方向に導いてくれることを願っています. あなたがそれを理解したかどうか私に知らせてください!

于 2013-01-23T11:12:42.413 に答える
1

BT over IP プロトコルを有効にする BT スタック アクセスが欠落していると思います。また、マルチキャストは、ネットワーク デバイス (ルーター) に依存して、これらのグループと登録を管理します。BT には ZeroConf ネットワークの概念 (wifi でも機能します) が必要ですが、ピアツーピア方式で管理されます。GameKit よりもソケット レベルに近い実装については、Bonjour または Dnssd を参照してください。

于 2012-08-20T19:48:54.433 に答える