2013-02-15 31 views
0

我需要發送一些數據到一個IP地址與UDP。我不知道如何格式化我的字符串。我需要發送多個數據包嗎?如何在Java中格式化UDP數據包?

從開發者頁面我只得到這樣的信息: enter image description here

那我該怎麼辦?在正確的部分,它是我需要發送的字符串。

任何人都可以解釋什麼意思是「挑戰」?

從開發者網站:

遊戲服務器已經初始化後不久,它選擇了兩個主服務器「加入」。爲了讓客戶在點擊「Internet」標籤時看到特定的遊戲服務器,遊戲服務器必須存在於Steam主服務器的記錄中。 遊戲服務器發送每個主服務器「q」(71)。 主服務器分別通過發送FF FF FF FF 73 0A,然後是(相對)唯一的4字節「挑戰」號碼進行響應。如果您向主服務器發送無效挑戰,您將會收到另一個挑戰作爲迴應。

這是什麼意思?

FF FF FF FF 73 0A

+1

那些是十六進制數字。它們具有0-9和A-F的數字,因爲它們基於16 ...發送「FF FF FF FF 73 0A」意味着發送代表所述值的6個字節。你確定你已經準備好接受你正在進行的項目嗎? – Fildor 2013-02-15 16:01:32

回答

3

正如我在評論中寫道,你需要發送的字節數,不是一個真正的字符串。因此,您必須查明服務器是否可以使用ascii編碼或其他不同的方式,然後以正確的編碼獲取字符串的字節。

當文件談到「發送FF 73 ...」時,它意味着發送字節。它是基數爲16的數字(=「十六進制」)。是例如創建像這樣的字節「FF」:

byte b = 0xFF; // Hex for 255 

當有關發送的「q(71)的」實況會談這意味着發送其編碼在ASCII中,字母「Q」的一個字節(0x71)。

關於「挑戰」,請閱讀Wikipedia,並深入瞭解開發者文檔。我相信他們會在這件事上多說一些。

關於在Java中使用UDP,你可以參考很多例子和tutorials from oracle

我希望這對你有幫助。祝你好運。

+0

這是發送數據的正確形式嗎? byte [] buff =「q」.getBytes(); – 2013-02-16 15:24:34

+0

是的。但要小心編碼。對於僅用於ascii的內容,沒關係。 – Fildor 2013-02-16 16:22:11