2013-05-11 2 views
7

Javaでネットワークをシミュレートする最良の方法は何ですか?1台のコンピュータでP2Pネットワークトラフィックをシミュレート

私はネットワークピアツーピアプロジェクトの初期段階にあり、クライアントの必要な特性のいくつかを判断するために、自分のPCで同時に100以上のインスタンスをシミュレートできたいと考えています。

理想的には、独自の入力ストリームと出力ストリームを持つソケットの「シミュレーション」バージョンを作成したいと考えています。最終的には、データをJavaオブジェクト間で移動するのではなく、これらのストリームをデータ転送に使用するため、実際のネットワークで発生する可能性のある遅延、データ損失などのエラーをシミュレートしたいと考えています。

理想的には、これらのシミュレーション方法は実際のストリーム標準のjava.net.*に非常に近いので、シミュレーションから実際のクライアントに移行するために書き直す必要はありません。

誰でも正しい方向に向けることができますか?

+0

sigを追加しないでください。質問には、彼らは騒音です。 –

答えて

3

Akkaを使用すると、1台のマシンに何百万もの俳優を作成し、それらの間の通信を「実際の」ネットワークと同様に編成できます。

はここでプロジェクト例です:あなたは、データ分析/統計ツールが組み込まれて大きなスケーリングされたシミュレーションのための素晴らしいI'ts、Omnet++をチェックすることもできますシミュレーションの目的のために https://github.com/adelbertc/scalanet

+0

どうしたの?あなたはその文書を読んだことがありますか?私はメーリングリストに電子メールがないのを見るのを恐れることはありません。 Akkaユーザーの大半はJavaからそれを使用しているので、私はそれがBSではないと確信しています。ドキュメント:http://doc.akka.io/docs/akka/2.1.2/ –

+0

申し訳ありませんが、私はあなたのコメントを理解するために苦労しています。実際、私は以前メーリングリストに質問を投稿していましたが、答えがあり、多かれ少なかれ満足していました。今私は非同期IOを行うときに私は定期的にakkaドキュメントを読んでいるが、アクターはパラダイムシフトの意味であるので、私は完全な理解を得るために複数の章を読む必要がある)))また、私はスカラ。 – vitalii

+0

申し訳ありませんが、コメントが間違ったタブに表示されました。 –

0

。 書き込みはC++に似ていますが、チュートリアルを参照するとかなり簡単です。

例(Omnet ++チュートリアルからの引用)6つのホストネットワーク

1

さて、あなたが本当に任意のツールを使用しますが、より良い、それを設計するためにあなたの頭脳を置く必要はありません。

下位通信フレームワークのインターフェイスが必要です。

必要なのは、あなたがinterfaces.Thisダミー実装に対してコーディングされた後にダミー1で実際の実装を置き換える/模擬することで、待ち時間などの機能を導入することができ、ダミーデータなど

あなたは春のコンテナで行くことができますコンテナにダミーのサーバーソケットを書き込んで、複数のインスタンス間の会話をシミュレートしたり、Webコンテナを使用してその頭痛をあなたから遠ざけたりすることができます。

+0

これは私の考えでも最初に起こる考えですが、待ち時間とデータ損失をシミュレートすることを希望しています。間に実際のネットワークがない場合、それは重要ではありません。 – flup

+1

そしてモックネットワークを背後に置くことができるように設計したら、実際にネットワークをモックする必要があります。 – kutschkem

+1

レイテンシとデータ・ルーは、スレッドをスリープ状態にし、基礎となるデータ構造からいくつかのデータを削除することと同じです。あなたがシミュレート/模擬した場合、非常に微調整された方法で実装をテストすることができます(つまり、高度に構成可能です)が、実際のネットワークに依存している場合は同じことをすることができません。 – Rohitdev

関連する問題