Client-Server-Protocol: Daten in ein Bytearray verpacken

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
PierreDole
User
Beiträge: 19
Registriert: Sonntag 21. Mai 2017, 20:31
Wohnort: Hambuach

Moin,
ich habe hier ein Server-Protocol, mit verschiedenen Packeten und stehe nun vor der Aufgabe, alles irgendwie in strukturierte Bytearrays zu verpacken. In C# ist das recht einfach, da es fixe Datentypen gibt. Wie ich das in Python realisiere, dazu fehlt mir momentan der Ansatz.

Das Login-Packet sieht z.B. so aus:
BYTE[1] Command
BYTE[30] Username
BYTE[30] Password

Heißt, das erste Byte des Packets gibt an um welches Packet es sich handelt. In diesem Fall ist 0x80 das Login-Packet. Dann folgen zwei Bytearrays mit jeweils einer Länge von 30 für den Usernamen und das Passwort. Aus dem Ganzen muss dann ein großes Bytearray werden, das an den Server geschickt wird. Ich weiß wie man mit den Verschiebeoperatoren (>> und <<) ein Bytearray auseinandernimmt, aber nicht wie man eins in Python zusammensetzt. Bin für jede Hilfe dankbar.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Dazu gibt es das eingebaute struct-Modul.

Code: Alles auswählen

import struct


def main():
    command = 0x80
    username = b"peter pasulke"
    password = b"streng geheim"
    message = struct.pack("B30s30s", command, username, password)
    print(repr(message))


if __name__ == '__main__':
    main()
PierreDole
User
Beiträge: 19
Registriert: Sonntag 21. Mai 2017, 20:31
Wohnort: Hambuach

Vielen Dank, ich probiere das aus.
Antworten