Netzwerk-Client

Im folgenden Beispiel wird ein JOIN-Request auf unseren Chatserver gemacht. Dieser sendet die gewünschte HTML-Datei.

(Das Beispiel lässt sich gut in TigerJython ausführen)

import socket 

HOST = "192.168.5.3"  # ersetzen mit korrekter IP
PORT = 12345

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.connect((HOST , PORT))

# Daten schicken
s.sendall("join:eddy".encode())

# Daten empfangen
reply = s.recv(1024).decode()

print(reply)
  • Das Paket socket wird importiert.
  • Die Konstante HOST wird auf die IP-Adresse gesetzt.
  • Die Konstante PORT wird auf den Wert 12345 gesetzt (gemäss Chat-Protokoll)
  • Es wird ein socket-Objekt s erstellt. Zum Erstellen müssen zwei Konstanten mitgeliefert werden, welche den Socket-Typ definieren:
    • socket.AF_INET besagt dass es sich um eine IPv4-Adresse handelt.
    • socket.SOCK_STREAM gibt an dass es sich um einen TCP-Socket handelt.
  • mit connect() wird die Verbindung hergestellt.
  • sendall() schickt Daten. Text kann mit encode() in Bytes umgewandelt werden.
  • recv() empfängt Daten. Bytes können mit decode() in String umgewandelt werden.
  • Zur Kontrolle wird der empfangene Text in der Shell ausgegeben.

Der Chat-Client muss unabhängig empfangen/senden können. Dazu brauch man sogenannte Threads. In appJar lassen sich diese relativ einfach erzeugen: http://appjar.info/pythonThreads/