Sammelthread: Minecraft Protokoll

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Killerjo96.

    Sammelthread: Minecraft Protokoll

    Hallo,

    Ich habe mir erlaubt sowas wie einen Sammelthread zu öffnen, einfach, weil es sicherlich mehr Leute gibt, die Verbindung zu einem Minecraft Server aufbauen möchten. Ich stelle mir das so vor, dass man hier Fragen bezüglich Problemen die man bei der Verbindung mit dem Minecraft Server bekommt. Ich hoffe ein Moderator oder Admin ist damit einverstanden.

    Komme ich direkt zum Ersten Teil, zur Verbindung zum Minecraft Server.

    VB.NET-Quellcode

    1. Dim Client As New TcpClient
    2. Dim NS As NetworkStream


    VB.NET-Quellcode

    1. Client.Connect("SERVER", PORT)
    2. If Client.Connected Then
    3. MsgBox("Verbindung steht.")
    4. End If


    So, das funktioniert wunderbar, wenn man jetzt das Programm nämlich startet und so verbindet und das Projekt beendet dann sieht man, dass der Server in die Console schreibt: Connection Lost o.s.ä. -> Weil man für den Login zu lange gebraucht hat, bzw. das Keep Alive nicht steht.

    VB.NET-Quellcode

    1. Public Sub KeepAlive()
    2. NS = Client.GetStream
    3. NS.WriteByte(&H0) 'Ist doch der Hex Wert 0x00 oder? Ich kann Bytes noch nicht so ganz xD
    4. 'HIER MUSS NOCH EIN INTEGER GESENDET WERDEN, DAS IST MEIN ERSTES PROBLEM!!! WIE??? MIT WELCHEM STREAM? MIT DEM STREAM WRITER KANN ICH NUR BYTES SENDEN.
    5. NS.Flush()
    6. End Sub


    Mein Problem ist einfach jetz, dass ich nicht weiß wie man einen Integer sendet, mit welchem Stream? Der NetworkStream kann ja (glaube ich) nur Bytes senden oder sehe ich das falsch?
    Außerdem würde ich gerne wissen, ob ich bis jetzt etwas so gemacht habe, dass ich später Probleme bekommen kann.

    Mein Ziel ist es, eine Verbindung zum Server herzustellen( Als Client anmelden) und dann einen Chat zu realisieren.
    Dafür möchte ich jetzt erstmal das KeepAlive umsetzen, was dazu doch nötig ist oder?

    Naja hoffe ihr könnt mir jetz schon mal helfen.

    @Sammelthread
    Falls der bestehen bleiben darf würde ich jeden User bitte bei neuer Frage einfach in Fettgedruckter Schrift über seinen Kommentar zu schreiben [Neue Frage] oder [Antwort an: %NAME%] für eine Hilfeantwort an den Benutzer mit einer Frage.
    Das wäre echt nett wenn ihr das beachten würdet.

    Lg Killerjo96 :thumbup:
    Okey, also StreamWriter, wenn ich diesen deklariert habe, etwa so:

    VB.NET-Quellcode

    1. Dim StreamWriter As StreamWriter
    2. StreamWriter = New StreamWriter(Client.GetStream)
    3. StreamWriter.WriteLine(91823) 'Als Random ID.
    4. StreamWriter.Flush()


    So jetzt habe ich dazu aber noch eine Frage:

    Jetzt schreibt der Network-Stream zuerst eine Nachricht(Das Packet ID Byte) und danach der StreamWriter einen Integer Wert(91823 als Random)

    Und beides dann mit jeweils: NS.Flush() und StreamWriter.Flush()?? Aber sind das dann nicht zwei Pakete? Das ist mir noch unklar...

    Pinki schrieb:

    Lass es sein.


    Nö xD

    Pinki schrieb:

    Du kennst nicht mal die Grundlagen von Streams


    Also das ist nicht richtig und da könnt ich ja schon direkt nen Hals kriegen ^^
    Nein mal ehrlich ich bin in TCP zwar noch relativ neu aber ich verstehe schnell und lerne die Codes wirklich.
    Ich habe es auch schon mit einem StreamWriter probiert aber das ist das erste Mal das ich mit einem Protokoll arbeite und Hex-Werten.

    Zweite Frage: WriteByte(&H...) das &H leitet wohl so wie das aussieht das Byte ein so wie in Hex 0x usw. was danach kommt bleibt gleich? Wäre noch interessant.

    Lg Killerjo96
    Du wirst dir wohl mal den mc source anschauen müssen.
    Einen Int32 Wert kannst du über einen BinaryWriter schreiben. Ob Little oder Big Endian relevant ist kann ich nicht sagen.
    Ansonsten musste das zeug halt manuell über Bitshifts zusammenbasteln.

    Aber mal ganz im ernst. Wenn du nichtma Hex-System verstehst oder nen BinaryWriter verwenden kannst... wird das nix.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    PacketWriter
    PacketReader
    (Hemsic lässt grüßen :D)

    Was ich da damals fabriziert habe, könnt ihr ja an diesem schönen und kommentierten Code ablesen... *hust*

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

    @Rinecamo - Danke sehr, werde ich mal übersetzen und lernen.

    thefiloe schrieb:

    Aber mal ganz im ernst. Wenn du nichtma Hex-System verstehst oder nen BinaryWriter verwenden kannst... wird das nix.

    Naja, Hex System kenne ich (Von 0-9 und A-F ) aber immer nur mit Farben benutzt, ist aber dasselbe. Wusste nur nicht, wie man sie in VB Formatiert: nämlich anscheinend so: &H*HEXCODE*, das wusste ich vorher nicht.
    Was würdet ihr mir denn empfehlen, was ich machen/lernen sollte, bevor ich mit so etwas beginne? 8o