Minecraft Server Infos auslesen

  • VB.NET

Es gibt 23 Antworten in diesem Thema. Der letzte Beitrag () ist von joscha999.

    @Pinki
    Danke, ich werde ihn mal lesen und lesen bis ich es kapiere.

    Ich habe es jetzt so umbearbeitet:

    VB.NET-Quellcode

    1. Imports System.Net.SocketsImports System.TextImports System.IOModule Module1
    2. Sub Main()
    3. 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()
    4. Dim buffer As Byte() = New Byte(1024) {} ns.Read(buffer, 0, 1024)
    5. 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ß!)
    6. 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.
    7. Console.WriteLine("MOTD: " & motd1 & "," & motd2 & "/" & motd3) End Using Console.ReadLine()End Sub
    8. End Module

    Die formatierung failt. :)

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „konradinius“ ()