2011-01-19 8 views
0

割り当てでは、2台のラップトップの無線LANカードをアドホックモードに切り替えて適切なSSIDを選択することで、2台のラップトップ間にアドホックネットワークを形成する必要がありました。 ラボの間にアドホックネットワークを作成しました。 1つのラップトップからシンプルな「Hello World」メッセージを送信し、ソケットを使用してもう1つのメッセージを受信する「送信者」と「受信者」アプリケーションを開発する必要がありました。udpデータグラムソケットとUDPパケットを使用して成功しました唯一の問題は、パケット長が最大長= 64 KB(IPアドレスが与えられていると仮定して、データがバイトの配列として表される)のように見えるということでした。 2バイト):udpパケットのフォーマットを設定するには?

| | | | | | | | | | | |H|E|L|L|O| |W|O|R|L|D|       
__________|___________| 
Sender ID |Reciever ID|  data 
(4 bytes) (4 bytes) 

私はreciver側で、あなたがpacket.getAddress()を使用して送信されたパケットのアドレスを取得することができます知っている;およびレシーバ側のアドレスは、すでに知られているが、私は理解してDNTこのフォーマットの目的、またはパケットのフォーマットを設定する方法。私はちょうどAC udpパケットの形式と、javaのudpパケットの形式を設定する方法について説明します。バッファバイト配列、intelAddress、およびポートを指定してdataGramパケットを作成すると、パケットのフォーマットがどのように設定されますか?バッファバイト配列を上記と同じ形式に変更する必要があります(ただし、送信者のアドレスは送信されます)。できるだけ早く私に返信してください。どんな助けもありがとう。前もって感謝します。

答えて

1

UDPパケットには暗黙の形式があります。 http://en.wikipedia.org/wiki/User_Datagram_Protocol Javaはそこになければならない8個のヘッダーバイト(送信元ポート、宛先ポート、長さ、チェックサム)を処理します。 1バイトのデータだけを提供しても、8バイトのヘッダーはJavaによって正しく作成されます。これらのヘッダーを作成する責任はありません。ヘッダーの値を入力するだけです。

あなたがコントロールするのは、パケットのデータセクションだけです。それは好きなようにフォーマットすることができます。上記のようにフォーマットする必要があるようです。そのフォーマットの価値は議論の余地があるかもしれませんが(ソース、宛先アドレス)、あなたはそれを守らなければならないように思えます。

はい、バッファバイト配列を指定したものと同じ形式に変更する必要があります。その他の値(IPアドレスとポート)は、ヘッダーの作成、または実際にワイヤでパケットを送信するために使用されます。

EDIT:申し訳ありませんが、4バイトのヘッダーを8に置き換えました。あなたは今私がプロトコル仕様を読むことができると思うだろう。

関連する問題