Anfängerfrage Daten wie an ein Objekt an Server übergeben

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
AlexL
User
Beiträge: 16
Registriert: Donnerstag 5. August 2021, 10:38

Hallo, ich bin neu hier im Forum.
Seit ca. einem halben Jahr beschäftige ich mich mit Python3 auf einem Raspberry Pi4.
Im Moment bin ich bei der Socketprogrammierung.

Ich kann z.B.

message = "info1"
sent = sock.sendto(message.encode('utf-8'), server_address)

abschicken und es kommt auch beim Server an.

Ich würde gern den Sever dafür benutzen, um ein paar Statusinformationen zu setzen und abzurufen. Das Abrufen soll von mehreren Clients per Polling erfolgen.

Wie kann ich ähnlich bei Objekten, Eigenschaften (also Variablenwerte) per set- und get-Methoden setzen und lesen?

Geht das überhaupt einfach oder muss ich mir einen String zusammenbasteln, der den Eigenschaftsnamen + den Datenwert in einem enthält und diesen vom Server "auseinanderbasteln" lassen.

Biitte nehmt mir meine Unkenntnis nicht übel.
Ich hätte gern ein paar Infos, wie man so etwas umsetzt.

Vielen Dank

Alex
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Du kannst nur Bytes übertragen. Wenn Du den Bytes einen Sinn geben willst, mußt Du das über ein Protokoll machen. Ein einfaches Protokoll wäre z.B. der String "GET wert\n" oder "SET wert 123\n". Das mußt Du auf der Serverseite dann auseinandernehmen und entsprechend verarbeiten.
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@AlexL,
Wie kann ich ähnlich bei Objekten, Eigenschaften (also Variablenwerte) per set- und get-Methoden setzen und lesen?
So einfach nicht.

Bei einer Socket-Verbindung werden Bytes übertragen. Man muss also auf Senderseite die dafür sorgen, dass die Daten in Bytes um gewandelt werden und die Empfängerseite muss verstehen, was mit diesen Bytes "gemeint" ist.

Das machst du ja schon mit einfachen Strings, die so in Bytes umgewandelt werden.

Code: Alles auswählen

message.encode('utf-8')
Du kannst also Kommandos an den Server schicken, die der dann interpretieren kann und eine entsprechende Antwort zurückschickt.
Zum Üben mit Sockets ist das ein schönes Projekt.
Wenn man es aber wirklich robust implementieren wollte, wäre es einfacher komfortablere Kommunikation per HTTP-Protocol zu verwenden, bzw. Libraries zu nutzen, die eine robuste Kommunikation bereitstellen.
AlexL
User
Beiträge: 16
Registriert: Donnerstag 5. August 2021, 10:38

Vielen Dank für die schnellen und hilfreichen Anfragen.
Ich werde es so machen und mir die entsprechenden Strings zusammenbasteln und vom Server auseinandernehmen lassen und vice versa.
Mit TCP werde ich mich etwas später beschäftigen.
Antworten