0

課題では、2 台のラップトップの無線 LAN カードをアドホック モードに切り替えてから、適切な SSID を選択することにより、2 台のラップトップ間でアドホック ネットワークを形成する必要がありました。ラボトップ間にアドホック ネットワークを作成しました。次に、ソケットを使用して一方のラップトップから単純な「Hello World」メッセージを送信し、もう一方のラップトップでそれを受信するための「送信側」アプリケーションと「受信側」アプリケーションを開発する必要がありました。私は udp データグラム ソケットと udp パケット (アドホック ネットワークにはサーバーがないため. 唯一の問題は、データが最大長 = 64 KB のバイトの配列として表される場合、パケット形式が次のようになる必要があると述べられていることです (IP アドレスが提示されていると仮定します)。 2 バイト):

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

受信者側では、送信されたパケットのアドレスを packet.getAddress(); を使用して取得できることを知っています。受信者側のアドレスは既にわかっていますが、この形式の目的やパケットの形式を設定する方法がわかりません。UDP パケットの実際の形式と、Java で UDP パケットの形式を設定する方法を知りたいだけです。バッファ バイト配列、intelAddress、およびポートを指定して dataGram パケットを作成すると、パケットのフォーマットがどのように設定されますか? 上記と同じ形式になるようにバッファバイト配列を変更する必要がありますか(ただし、送信者のアドレスは送信されます)?できるだけ早く返信してください。どんな助けでも大歓迎です。前もって感謝します。

4

1 に答える 1

1

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

制御できるのは、パケットのデータ セクションだけです。これは、好きなようにフォーマットできます。上記のようにフォーマットする必要があるようです。その形式の値は議論の余地があるかもしれませんが (送信元、宛先アドレス)、関係なくそれに従う必要があるように思えます。

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

編集: 申し訳ありませんが、4 バイトのヘッダーを 8 に置き換えました。プロトコル仕様を読めるようになったと思うでしょう。

于 2011-01-19T23:40:09.803 に答える