(я специально использую VB.net, протокол, на который я ссылаюсь, предназначен для "Сервера Minecraft")
У меня есть следующая ссылка для получения подробной информации о протоколе для сервера, который я делаю.
Протокол
Теперь, согласно этому протоколу, первые три байта должны указывать тип пакета.Я проверил фактический исходный код (в Java) клиента, который будет подключаться к серверу, и подтвердил, что это правда.
Проблема в том, что первые три байта должны быть шестнадцатеричным числом номера пакета.
Конкретный пакет, с которым я работаю (Первый проверочный пакет, отправленный клиентом).
Protocol :: Client Server Handshake: (У меня недостаточно высокий уровень репутации, чтобы опубликовать вторую ссылку, вместо этого я опубликую ее в виде простого текста)
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
Может кто-нибудь сообщить мне подробности о том, что я делаю неправильно?1032 *