2

基本的に一連のアクションをクリックできるiPhoneアプリケーションを開発しています。これらのシリーズは事前定義されており、共通の構成サーバーと同期されます。

そのアプリは、同時に複数のデバイスで実行されている可能性があります。すべてのデバイスには、同じ一連のアクションが定義されていると見なされます。すべてのデバイスは同等であると見なされ、サーバーや複数のクライアントなどはありません。

(のみ)これらのデバイスの1つがいつでも人によって使用されますが、人がいつでも別のデバイスに切り替える可能性があります。すべての「パッシブ」デバイスは、同じアクションを表示するようにアクティブデバイスと同期する必要があります。

すべてが可能な限り自動的に行われる必要があります。デバイスの選択、構成、同じネットワーク内のすべてのデバイスが同じ一連のアクションに参加することはありません。

追加の要件の1つは、デバイスがプレゼンテーション(一連のアクション)中に参加でき、現在アクティブなアクションにジャンプする必要があることです。

現在、そのネットワーキング/通信部分を実装するための2つのオプションがあります。

  • ボンジュール。ネットワーク内の他の1つのデバイスと自動的に接続し、それと通信できる実用的なプロトタイプを実装しました。この時点で、「複数のデバイス」の要件がどれだけの追加作業であるかはわかりません。すべてのデバイスに対して一連の接続を開き、同期イベントをすべてのデバイスに手動で送信する必要がありますか?より良い方法はありますか、それともbonjourはそれを助けるために何かを提供しますか?とにかくネットワーク内のすべてのデバイスと通信したい場合、Bonjourは何を提供しますか?

  • AsyncUdpSocketを使用したマルチキャスト。ポートを定義し、マルチキャスト同期イベントをそのポートに送信するだけです。tcpでbonjourを使用する場合と比較した場合の主な問題は、接続が安全でなく、パケットが失われる可能性があることだと思います。ただし、これが本当に問題になる場合は、トラフィックの少ないプライベートで保護されたWLANネットワークにあります。私が見ていない他の不利な点はありますか?現時点では、それは比較的簡単なオプションのように聞こえるので...

どれを提案しますか?それとも、私が考えていない別のより良い代替案がありますか?

4

3 に答える 3

2

GameKit(iOSに組み込まれている)をチェックする必要があります-便利なパッケージに必要な多くの機械があります。ネットワーク上のピアを簡単に検出し、クライアント間でデータを簡単に送受信できます(ブロードキャストまたはピアツーピア)

于 2011-05-16T19:02:03.533 に答える
1

私の経験では、Bonjourはあなたが望むものに最適です。目的に合わせて簡単に変更できるChattyというソースコードが関連付けられた優れたチュートリアルがあります。

于 2011-05-16T18:58:25.613 に答える
0

私はこれに最適なiphone(集中型サーバーなし)用の分散メッセージバスを一緒にいじりました。UIの人がコードを台無しにしたので、そこにドラゴンがいることに注意してください:https ://code.google.com/p/iphonebusmiddleware/

基本的な考え方は、bonjourを使用してリーダー選出とのネットワークを形成することです。リーダーは、すべてのスレーブが関心のあるトピックにサブスクライブするためのハブになります。次に、特定のトピックに送信されたメッセージは、そのトピックにサブスクライブされているすべてのノードに配信されます。マスター切断は単純で、リーダー選出プロセスを再開することを意味します。

于 2011-05-19T14:05:56.310 に答える