lager:lok_netze:tcp_python
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| lager:lok_netze:tcp_python [26.09.2019 17:50] – richard | lager:lok_netze:tcp_python [04.02.2025 12:09] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ~~DISCUSSION|Ergänzungen~~ | + | ~~DISCUSSION:closed|Ergänzungen~~ |
| ====== Programmierung Übung zu TCP mit python ====== | ====== Programmierung Übung zu TCP mit python ====== | ||
| Zeile 63: | Zeile 63: | ||
| print(' | print(' | ||
| </ | </ | ||
| + | |||
| + | ==== Interaktiver Echo-Client ==== | ||
| + | |||
| + | <file python echo_client_interactive.py> | ||
| + | # | ||
| + | |||
| + | import socket | ||
| + | |||
| + | HOST = ' | ||
| + | # PORT = 65432 # Port des Servers eintragen | ||
| + | PORT = 50000 | ||
| + | |||
| + | host = input(' | ||
| + | port = input(' | ||
| + | |||
| + | if host != '': | ||
| + | HOST = host | ||
| + | if port != '': | ||
| + | PORT = int(port, 10) | ||
| + | |||
| + | with socket.socket(socket.AF_INET, | ||
| + | s.connect((HOST, | ||
| + | written = '' | ||
| + | while True: | ||
| + | written = input(' | ||
| + | if written == ' | ||
| + | break; | ||
| + | s.sendall(bytearray(written, | ||
| + | data = s.recv(1024) | ||
| + | print(' | ||
| + | |||
| + | print(' | ||
| + | </ | ||
| + | |||
| Zeile 76: | Zeile 110: | ||
| <file python tcp_multi_server.py> | <file python tcp_multi_server.py> | ||
| + | # | ||
| + | |||
| import select, socket, sys, queue | import select, socket, sys, queue | ||
| server = socket.socket(socket.AF_INET, | server = socket.socket(socket.AF_INET, | ||
| Zeile 122: | Zeile 158: | ||
| del message_queues[s] | del message_queues[s] | ||
| </ | </ | ||
| + | |||
| + | ===== Keystroke als Command Line Handler ===== | ||
| + | |||
| + | ACHTUNG: Das folgende Beispiel funktioniert nur, wenn das Script direkt in der Shell ausgeführt wird. Hierzu muss zunächst die Datei ausführbar gemacht werden. Mit folgendem Befehl kann dies getan werden: | ||
| + | |||
| + | < | ||
| + | |||
| + | Das folgende Bespiel wartet dauerhaft auf eine Eingabe und führt je nach Tastedruck Programmcode aus. | ||
| + | <file python keystroke_sample.py> | ||
| + | # | ||
| + | |||
| + | import sys, termios, tty, os, time | ||
| + | |||
| + | def getch(): | ||
| + | fd = sys.stdin.fileno() | ||
| + | old_settings = termios.tcgetattr(fd) | ||
| + | try: | ||
| + | tty.setraw(sys.stdin.fileno()) | ||
| + | ch = sys.stdin.read(1) | ||
| + | |||
| + | finally: | ||
| + | termios.tcsetattr(fd, | ||
| + | return ch | ||
| + | |||
| + | while True: | ||
| + | char = getch() | ||
| + | |||
| + | if (char == " | ||
| + | print(" | ||
| + | exit(0) | ||
| + | |||
| + | if (char == " | ||
| + | print(" | ||
| + | time.sleep(1) | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
lager/lok_netze/tcp_python.1569520222.txt.gz · Zuletzt geändert: (Externe Bearbeitung)
