lager:lok_netze:tcp_python
Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Programmierung Übung zu TCP mit python
Auf dieser Seite gibt es eine ausführliche Beschreibung der TCP-API von python.
Aufgaben
- Programmieren Sie eine einfache Client-Client-Anwendung bei der sich die jeweiligen Clients Nachricht per TCP zusenden.
- Erweitern Sie die Nachrichten um Farben (rot, grün, blau), die zu Beginn des Textes mit einfachen Zeichen vom User ausgewählt werden sollen und auf der Empfangsseite farbig ausgegeben werden.
* für blau - für rot + für grün
Hinweise / Tipps
Folgender Code kann als Grundlage für einen sogenannten ECHO-Server dienen, der alle Daten an den Sender zurück schickt, die er empfangen hat.
Der Code wird hier ausführlich erklärt.
ECHO-Server
Der Server binden sich auf den Socket (HOST, PORT) und lauscht (conn.recv) dort auf einkommende Daten.
Die empfanenen Daten sendet er an den Client per conn.sendall direkt zurück.
Zur Kontrolle gibt er per print die empfangenen Daten in der Shell aus.
- echo_server.py
#!/usr/bin/env python3 import socket HOST = '127.0.0.1' # Hier sollte eine "echte" IP eingetragen werden, ansonsten kann der Server nur von dem PC selbst erreicht werden PORT = 65432 # Port auf dem gelauscht (listen) wird (nicht previligierte Ports > 1023) with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.bind((HOST, PORT)) s.listen(0) # Auf der Real Python-Seite fehlt der Parameter 0, so dass es zu Fehlermeldungen kommt conn, addr = s.accept() with conn: print('Connected by', addr) while True: data = conn.recv(1024) if not data: break conn.sendall(data) print('Client says:', repr(data))
ECHO-Client
Der Client schickt genau eine Nachricht an den Server und gibt per print das Echo (Antwort des Servers) in der Shell aus.
- echo_client.py
#!/usr/bin/env python3 import socket HOST = '127.0.0.1' # Hostname oder IP des Echo-Servers eintragen PORT = 65432 # Port des Servers eintragen with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.connect((HOST, PORT)) s.sendall(b'Hello, world') data = s.recv(1024) print('Received', repr(data))
lager/lok_netze/tcp_python.1568709900.txt.gz · Zuletzt geändert: (Externe Bearbeitung)

Ergänzungen