@Pinki
Danke, ich werde ihn mal lesen und lesen bis ich es kapiere.
Ich habe es jetzt so umbearbeitet:
Die formatierung failt.
Danke, ich werde ihn mal lesen und lesen bis ich es kapiere.
Ich habe es jetzt so umbearbeitet:
VB.NET-Quellcode
- Imports System.Net.SocketsImports System.TextImports System.IOModule Module1
- Sub Main()
- Dim client As New TcpClient("176.57.132.206", 25565) ' Server ip / port Dim ns As NetworkStream = client.GetStream() ns.WriteByte(&HFE) ' http://www.wiki.vg/Protocol#Server_List_Ping_.280xFE.29 -> Serverlist ping ist nur 1 byte 0xFE ns.Flush()
- Dim buffer As Byte() = New Byte(1024) {} ns.Read(buffer, 0, 1024)
- Using br As New BinaryReader(New MemoryStream(buffer)) br.ReadByte() ' 1. Byte ist immer der Typ des Pakets, sollte hier 0xFF sein(Disconnect/Kick) Dim arrSize As Byte() = br.ReadBytes(2) ' Laut http://www.wiki.vg/Protocol haben Strings 2 führende Bytes welche die Größe des Strings angeben Array.Reverse(arrSize) ' Bytes werden verkehrt gesendet Dim size As Short = BitConverter.ToInt16(arrSize, 0) * 2 'In Short konvertieren, *2 da es sich um BigEndianUnicode handelt(Jedes Zeichen ist 2 bytes groß!)
- Dim arrString As Byte() = br.ReadBytes(size) ' Der String, dieser enthält Motd/Online player/Player slots Dim str As String = Encoding.BigEndianUnicode.GetString(arrString) ' Die bytes in einen String konvertieren Dim motd1 As String = str.Split(New String() {"§"}, StringSplitOptions.None)(0) ' Die einzelnen Angaben werden durch ein "§" getrennt, der erste String ist die Motd Dim motd2 As String = str.Split(New String() {"§"}, StringSplitOptions.None)(1) ' Spieler die drauf sind. Dim motd3 As String = str.Split(New String() {"§"}, StringSplitOptions.None)(2) ' Slotzahl.
- Console.WriteLine("MOTD: " & motd1 & "," & motd2 & "/" & motd3) End Using Console.ReadLine()End Sub
- End Module
Die formatierung failt.
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „konradinius“ ()