(我特別使用VB.net,我指的協議是一個「的Minecraft服務器」)瞭解服務器協議
我有我正在做一個服務器上的協議下面的鏈接瞭解詳細信息。現在
,根據該協議,前三個字節應指定數據包類型。我檢查了將連接到服務器的客戶端的實際源代碼(以java爲單位),並驗證了這是真實的。
問題是,前三個字節值應該是數據包的十六進制數。
我正在使用的特定數據包(由客戶端發送的第一個驗證數據包)。
協議::客戶端服務器握手:(我沒有足夠高的聲望等級張貼此第二個鏈接,我將發佈它以純文本代替)
mc.kev009.com/wiki/Protocol #Client_to_Server_2
我可以讀取顯示客戶端發送的「用戶名」前三個字節後提供的字符串。問題是,我不知道如何識別前三名。這不是我所期望的。
我認爲在將整個結果轉換爲可讀字符串之後,前三個字符將類似於002或200.相反,我接收到ASCII碼爲「2」,「0」和「8」的字符, 。我知道包號是2,爲什麼我得到這樣一個奇怪的結果?
這裏是我目前正與代碼:
代碼:
cWrite("Waiting for client initiated 'handshake'...")
Dim HandshakePacket As String = PW.getTextPackets(clientStream)
cWrite(HandshakePacket.Substring(3).Trim & " has requested the required 'handshake'...")
Try
Select Case Convert.ToInt32(HandshakePacket.Substring(0, 3), 16)
Case 2
cWrite("~HANDSHAKE PACKET~")
Case Else
cWrite("Packet id: " & Convert.ToInt32(HandshakePacket.Substring(0, 3), 16) & " not recognized!")
End Select
Catch ex As Exception
'???
End Try
-cWrite是,基本上顯示的信息(調試輸出的一種形式) -PW包含我的課的功能用於以字符串和字節形式發送/接收數據包。 -PW.getTextPackets返回的數據包發送的請求已經從默認的字節形式轉換成ASCII -clientStream僅僅是從底層流clientTcp
有人能爲我提供什麼我做錯了細節?
該編輯是不必要的。標題需要保持原樣。我的問題,如果你考慮到的話,是關於理解發送給我的字節,而不一定要求你知道協議。我僅包含協議信息,以便您可以將其與我提供的代碼進行比較。 – FreeSnow 2011-01-30 03:10:00