2012-03-23 5 views
0

一部のクライアントソフトウェアの動作をテストしており、ルータのような機能をエミュレートするソフトウェアを作成する必要があります。それが必要とするのは、パケットを受信し、生きる時間を変更し、それを戻すことだけです。これは通常のJavaで可能ですか? EACH UDPパケットを受信し、そのソケット上で生活する時間を設定し、新しいソケットを開き、それを送り返す(またはこのISN」のJavaのIPヘッダー

  1. は、ソケットA
  2. に聞く:または、以下のようなことを行うのですか可能性/効率的なT)
  3. レシーバが、それはいくつかのホップを横断し(実際にはしていないしているように表示され、変更された値)

ので、2つのアプローチが可能かもしれないと、パケットを取得する - ?直接受け取ったパケットを編集します(それから単に返送する)、または新しいパケットを構築し、oriからの値をコピーするそれを送信する前に適切なヘッダー/ソケットオプションを設定してください。

EDIT: 'router'は他のルータへの転送などの複雑なルーティングを一切行いません...単に受信したメッセージのttlヘッダーフィールドを減らし、メッセージを直接クライアントに返します。

答えて

1

SocketクラスとServerSocketクラスのAPIを参照してください。さまざまなプロトコルのサーバー実装の大部分は、80などの標準ポートでパケットを受け取り、いくつかのエフェメラルポートを使用して応答を送信します。

+0

http://www.codeproject.com/Articles/86387/Implementing-a-Web-Server-in-Java –

+0

ご回答ありがとうございますが、CodeProjectの記事は単純なWebサーバー用です。私はルータを非常に基本的なエミュレーションにすることを考えています。メッセージを受信し、小さな変更を加えて送信者に送り返すという点で、ルータのエミュレーションを行うことを検討しています。 – xingyu

+0

ここにAODVルーティングプロトコルのオープンソース実装があります。私はそれを使用して、私のルーティングの実装では本当に素晴らしい仕事をした。これは完全なTCP/IPプロトコルスタック実装を備えています。どのようにあなたのために動作するか見てみましょう。 http://jist.ece.cornell.edu/docs/040421-swans-aodv.pdf –

関連する問題