1. #1

    Registriert seit
    13.02.2011
    Beiträge
    54
    Thanked 79 Times in 49 Posts

    Standard ModulPaket lesen

    Ich verzweifel gerade am Modul Paket lesen.
    Folgendes Paket habe ich
    Code:
    %3A%00%04l%01-%0Eich%20bin%20ich%2031%21%01%00%8B%C3J%FF%FE%0B%0Fpics/female.png%0E%0B%16pics/kn-smartphone.png%0D%0C%00%00%FF%00%0C
    %3A = :
    %04l bezeichnet dann, was für ein modul ich bekomme? Ich bekomme da ADD_CHANNEL_MEMBER (treeindex: 1112) - macht auch sinn Soweit
    lese ich dann weiter bekomme ich als type 1 - was readBoolean ist - das bedeutet das - würde zum true werden (ich denke hier irgendwo ist schon mein fehler)
    lese ich nämlich weiter bekomme ich 0x0E was aber schon die länge des Nicks wäre... da hier anscheinend meine logik falsch ist bräuchte ich mal ein Denkanstoß was falsch ist

  2. #2

    Registriert seit
    13.02.2011
    Beiträge
    54
    Thanked 79 Times in 49 Posts

    Standard AW: ModulPaket lesen

    Ok mit ein bisschen nachdenken bin ich glaube ich weiter.
    Ich versuche jedes Paket gleich zu lesen, scheinbar muss ich aber je nach Paket fix lesen wie Channel, Nick etc
    Mein Bool wird also ein String sein mit der Länge von 1 und den Channel definieren. Da ich nur in einem Channel bin ein - als Channel.

  3. #3

    Registriert seit
    09.11.2011
    Beiträge
    121
    Thanked 129 Times in 46 Posts

    Standard AW: ModulPaket lesen

    Die ersten zwei Bytes (ohne :\0) repräsentieren die ID als Short. Man erhält also die ID 1132. Dies rechnet man noch -20 (ID - StartIndex im Tree angegeben) und man kriegt den TreeIndex 1112, wie von dir korrekt angegeben.

    Im Tree sind auch die jeweiligen Strukturen vorgegeben.

    Beim Lesen benötigt man die Struktur von ADD_CHANNEL_MEMBER. Die Struktur sieht wiefolgt aus: [28, 1128, 836, 1130, 11, 1131, 12]

    28 -> CHANNEL_NAME (TreeIndex: 28-20 = 8 usw.) -> Struktur von CHANNEL_NAME: 13 (heißt: String)
    1128 -> CHANNEL_MEMBER

    --> Struktur von CHANNEL_MEMBER: [466, 207, 182, 1133, 40, 1134, 11, 1135, 12, 673, 672] (heißt: Module)
    -----> 466 -> NAME -> Struktur von NAME: 13 (heißt: String)
    usw. usw.

    836 -> FROM_CHANNEL -> 28 (heißt: Module und wie wir wissen ist 28 CHANNEL_NAME und die Struktur von CHANNEL_NAME ist String)
    1130 -> SHOW_LOGIN_MESSAGE -> STRUKTUR: 1 (heißt Boolean)
    11 -> null (11: ArrayList)
    1131 -> PREFIX_ICON (ArrayList of Modules, siehe die 11 zuvor)
    12 -> null (End of ArrayList)


    Tree-unabhängige Strukturen:
    0 -> Byte (für Enums)
    1-> Boolean
    2 -> Byte
    3 -> Short
    4 -> Integer
    5 -> Long
    6 -> Float
    7 -> Double
    8 -> Character
    9 -> String (UTF)
    10 -> Noch nicht implementiert: BinaryTree
    11 -> ArrayList
    12 -> Unerwartetes ArrayEnde
    13 -> String

    int len = in.readUnsignedByte();
    if (len == 255) {
    return null;
    }
    if (len >= 128) {
    len = (len - 128 << 16 | in.readUnsignedByte() << 8 | in.readUnsignedByte());
    }
    final StringBuilder str = new StringBuilder(len + 2);
    for (int i2 = 0; i2 < len; ++i2) {
    str.append(in.readChar());
    }
    return str.toString();
    Default: Module (Rekursiv)

    Guck dir das alles im Applet (base.module.BaseProtocol usw. bei main.jar [Standalone-Client]) von Knuddels mal an.

    Bei dir ist die "1", die du fälschlicherweise als readBoolean bezeichnest, die Länge des Strings für CHANNEL_NAME.
    Geändert von Brainy (03.05.2018 um 00:30 Uhr)

  4. The Following User Says Thank You to Brainy For This Useful Post:

    silently (26.03.2018)

  5. #4

    Registriert seit
    13.02.2011
    Beiträge
    54
    Thanked 79 Times in 49 Posts

    Standard AW: ModulPaket lesen

    Ok alles klar, kriege ich nun gerechnet....
    Ich bekomme für die Structure für 1112 folgendes: ["28", "1128", "836", "1130", "11", "1131", "12"]

    Sind also identisch

    Was jetzt für mich die frage ist, am Ende des Trees geht es mit :RIGHT etc weiter, was passiert mit diesem Teil des Codes? das ist mir noch nicht ganz klar. Sind das auch Modulbezeichner, werden die einfach hinten dran gehängt?
    Geändert von silently (26.03.2018 um 12:57 Uhr)

  6. #5

    Registriert seit
    13.02.2011
    Beiträge
    54
    Thanked 79 Times in 49 Posts

    Standard AW: ModulPaket lesen



    Endlich - geschafft. Bleibt nur noch die letzte Frage von mir. Ansonsten funktioniert nun das Botten im HTMLChat super.
    Geändert von silently (26.03.2018 um 17:25 Uhr)

  7. The Following User Says Thank You to silently For This Useful Post:

    Negok (26.03.2018)

Ähnliche Themen

  1. C# Registry lesen
    Von Gast78236 im Forum Andere
    Antworten: 1
    Letzter Beitrag: 13.07.2014, 19:31
  2. VB.Net TCP Paket bilden - Paketzeichnung lesen
    Von !lkay im Forum .Net
    Antworten: 5
    Letzter Beitrag: 31.01.2012, 11:56
  3. Paketlänge lesen/schreiben
    Von Flav im Forum Sourcecode
    Antworten: 0
    Letzter Beitrag: 29.07.2011, 17:05
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.