1

多くのマシンで実行されるアプリケーションを作成しようとしています。これらのマシンは、UDPパケットのストリームを送信することで相互に通信します。通常、あるマシンは別のマシンに多くのパケットを送信しますが、それらが切り替わるまで、別のマシンは別のマシンに同じことを行います。UDPの選択は、アプリケーションの性質によるものです(信頼性よりもリアルタイム/速度の方が重要です)。また、UDPがコネクションレス型プロトコルであることも理解しています。

簡単なプロトタイプを作成することで、NIOデータグラムサーバー(バインド)とNIOデータグラムクライアント(接続)を作成することができました。しかし、私はクライアントからサーバーに一方向にしか送信できないことに気づきました(または何かが足りないのではないでしょうか?)。反対方向に送ることができませんでした。

また、UDPはコネクションレス型のプロトコルであるため、パケットを送信する多くのクライアント(n-clientから1つのサーバー)を受け入れることになっていると思いました。ブロードキャスト)。

双方向を実現するために、別のポートをリッスンするサーバーをクライアントに作成する必要がありますか?n-clientは同時に1つのサーバーにパケットを送信できますか?私は誰かにこのことを私に片付けてもらいたいだけです。サンプルコードは必要ありません(非常に高く評価されますが)、いくつかのポインタを教えてください。

ありがとうございました。

4

1 に答える 1

1

あなたが説明していることについては、異なるマシンで実行されているプログラムの各インスタンスとすべてのインスタンスに1つのサーバースレッドともう1つのクライアントスレッドが必要です。

サービングスレッドとクライアントスレッド(クライアントスレッドはすべてのサーバー(IPとポート)について知る必要があります)を使用して、マルチスレッドプログラムを作成します。サーバーは、現在のマシンのポートでリッスンするだけです。

この同じプログラムを複数のマシンで実行すると、p2pグループが得られます。

インターネットの無料サーバーにトラッカーを設定することもできます。トラッカープログラムは、よく知られたURLに残り、参加しているマシンのリストを維持します。マシンで起動すると、プログラムの各インスタンスは、それに接続するために必要な詳細のトラッカーを更新します。トラッカーは、このデータのリストを維持し、後で登場する新しいインスタンスとすべてを共有できます。

于 2012-07-08T17:12:01.880 に答える