Hallo Leute,
ich bin noch ganz neu in der Python Welt und hänge an einem Problem.
Ich bekomme von einem Server Daten zugesandt und muss diese Daten in verschiedene Variablen schreiben.
Die Message die mir der Server sendet sieht ungefähr so aus:
1 Byte [Message Header]
1 Integer [Stringlength]
1 String [Command]
1 Integer [Checksumme]
Ich hoffe ihr könnt mir bei meinem Problem helfen.
Viele Grüße
Netzwerk-Datenstrom auslesen ?
OK ich habe mich wohl undeutlich ausgedrückt, sorry dafürIronEagle hat geschrieben: und muss diese Daten in verschiedene Variablen schreiben.
Meine Frage lautet:
Wie kann ich die gesamten Empfangenen Bytes so auslesen, dass ich jeden einzelnen Teil der vom Server gesendeten Daten in eine gesonderte Variable schreiben kann?
@IronEagle: Du musst die einzelnen Bytes entsprechend interpretieren. Entweder „per Hand” oder zum Beispiel mit Hilfe des `struct`-Moduls aus der Standardbibliothek.
Edit: Minimal läuft das auf so etwas hinaus:
Aber eigentlich wird man da eine Klasse für schreiben wollen, die zum Beispiel beim lesen auch gleich die Prüfsumme berechnet/aktualisiert um sie mit der gesendeten zu vergleichen.
Edit: Minimal läuft das auf so etwas hinaus:
Code: Alles auswählen
#!/usr/bin/env python
# coding: utf8
import socket
import struct
from contextlib import closing
def read_integer(in_file):
return struct.unpack('<i', in_file.read(4))[0]
def main():
with closing(socket.socket()) as sock:
sock.connect(('127.0.0.1', 1234))
connection = sock.makefile('rw')
connection.write('some request...')
connection.flush()
header = ord(connection.read(1))
print header
command_length = read_integer(connection)
command = connection.read(command_length)
print command
checksum = read_integer(connection)
print checksum
if __name__ == '__main__':
main()