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