Seite 1 von 1

Client-Server-Protocol: Daten in ein Bytearray verpacken

Verfasst: Dienstag 14. Februar 2023, 14:35
von PierreDole
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.

Re: Client-Server-Protocol: Daten in ein Bytearray verpacken

Verfasst: Dienstag 14. Februar 2023, 14:51
von __deets__
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()

Re: Client-Server-Protocol: Daten in ein Bytearray verpacken

Verfasst: Dienstag 14. Februar 2023, 22:03
von PierreDole
Vielen Dank, ich probiere das aus.