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: 04.02.2025 12:10 (Externe Bearbeitung)
Ergänzungen