2011-01-19 37 views
0

在任務中,需要在2檯筆記本電腦之間構建一個ad hoc網絡,方法是將2檯筆記本電腦中的無線局域網卡切換到ad hoc模式,然後選擇合適的SSID。 我在labtops之間創建了一個adhock網絡。然後需要開發一個「Sender」和「Receiver」應用程序來從一臺筆記本電腦發送一個簡單的「Hello World」消息,並使用套接字在另一臺筆記本電腦上接收它。我成功地使用udp數據報套接字和udp數據包在java中),因爲adhoc網絡中沒有服務器,唯一的問題是有人說數據包格式應該如下所示,其中數據表示爲最大長度= 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()發送數據包的地址;以及reciever側的地址是已知的,但我硝基甲苯瞭解這種格式的目的或如何設置數據包的格式。我只想知道什麼是交流td格式的udp數據包以及如何在java中設置udp數據包的格式。如何通過指定緩衝區字節數組創建dataGram數據包,intelAddress和端口設置數據包的格式?我是否需要修改緩衝區字節數組,使其具有與上述相同的格式(儘管發送方的地址是反正發送的)?請儘快回覆我。任何幫助將不勝感激。提前致謝。

回答

1

UDP數據包具有隱含格式。 http://en.wikipedia.org/wiki/User_Datagram_Protocol Java將處理必​​須存在的8個頭字節(源端口,目標端口,長度,校驗和)。即使只提供一個字節的數據,8字節的頭仍然可以由Java正確創建。您不負責形成這些標題,只是提供這些標題中的值。

您可以控制的是數據包的數據部分。這可以用任何你喜歡的方式進行格式化。這聽起來像你需要格式化,如上所示。這種格式的價值可能是有爭議的(來源地,目的地地址),但聽起來像你必須堅持它。

是的,您必須修改緩衝區字節數組,使其與您提供的格式相同。其他值(IP地址和端口)用於形成報頭,或實際上通過線路發送數據包。

編輯:對不起,用8替換4字節的標題。我的壞。你會認爲我現在可以閱讀協議規範。