Sockets in Python: Grundlagen und Praxis

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Was sind Sockets in Python und wie funktionieren sie?

Ein Socket ist eine Programmierschnittstelle, die eine bidirektionale Kommunikation zwischen zwei Knoten in einem Computernetzwerk ermöglicht. Es handelt sich um eine virtuelle Verbindung, über die Anwendungen Daten senden und empfangen können.

Moderne Netzwerkanwendungen nutzen Python Sockets für verschiedenste Systeme – von Messengern über Online-Spiele bis hin zu Datenaustauschdiensten. Überall kommt die Netzwerkkommunikation via Sockets zum Einsatz.

Grundbegriffe der Netzwerkprogrammierung

Um mit Sockets in Python zu arbeiten, solltest du diese Schlüsselkonzepte verstehen:

  • IP-Adresse – eindeutige Adresse eines Geräts im Netzwerk
  • Port – numerische Kennung eines Dienstes auf einem Gerät
  • TCP (Transmission Control Protocol) – zuverlässiges Datenübertragungsprotokoll
  • UDP (User Datagram Protocol) – schnelles Protokoll ohne Zustellgarantie

TCP gewährleistet eine garantierte Datenzustellung mit Fehlerkontrolle. UDP ist schneller, bietet aber keine Garantie, dass Nachrichten ankommen.

Einrichtung und Import des socket-Moduls

Das socket-Modul ist Teil der Python-Standardbibliothek. Um mit Sockets zu arbeiten, genügt ein einfacher Import:

import socket

Es sind keine zusätzlichen Installationen erforderlich. Die socket-Bibliothek ist in allen Python-Versionen standardmäßig verfügbar.

Einen TCP-Server in Python erstellen

Basisimplementierung eines Servers

Ein TCP-Server nimmt Verbindungen von Clients entgegen und verarbeitet deren Anfragen. Hier eine einfache Umsetzung:

import socket

# TCP-Socket erstellen
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# An Adresse und Port binden
server_socket.bind(('localhost', 12345))

# Auf eingehende Verbindungen warten (max. 5 in der Warteschlange)
server_socket.listen(5)

print("Server gestartet. Warte auf Verbindungen...")

while True:
    # Verbindung annehmen
    client_socket, address = server_socket.accept()
    print(f"Verbindung von {address}")
    
    # Nachricht empfangen
    message = client_socket.recv(1024).decode('utf-8')
    print(f"Nachricht erhalten: {message}")
    
    # Antwort senden
    client_socket.send("Hallo vom Server!".encode('utf-8'))
    
    # Verbindung zum Client schließen
    client_socket.close()

Ablauf des Serverprozesses verstehen

Im obigen Code passieren folgende Schritte:

  1. Ein Socket wird mit dem TCP-Protokoll erstellt
  2. Der Server bindet sich an die Adresse localhost und Port 12345
  3. Der Server wartet auf eingehende Client-Verbindungen
  4. Bei einer Verbindung wird die Nachricht des Clients entgegengenommen
  5. Der Server sendet eine Antwort und schließt die Verbindung

Die Methode socket.AF_INET steht für IPv4, während socket.SOCK_STREAM das TCP-Protokoll definiert.

Entwicklung eines TCP-Clients

Ein TCP-Client verbindet sich mit dem Server und tauscht Daten aus. Beispielimplementierung:

import socket

# Client-Socket erstellen
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Mit Server verbinden
client_socket.connect(('localhost', 12345))

# Nachricht senden
client_socket.send("Hallo, Server!".encode('utf-8'))

# Antwort empfangen
response = client_socket.recv(1024).decode('utf-8')
print(f"Antwort vom Server: {response}")

# Verbindung schließen
client_socket.close()

Der Client führt eine Abfolge von Aktionen aus: Verbinden, Daten senden, Antwort empfangen und Verbindung schließen.

Arbeiten mit dem UDP-Protokoll

UDP bietet eine schnellere Datenübertragung ohne Zustellgarantie. Dadurch eignet es sich besonders für Echtzeitanwendungen.

UDP-Server


                    

Blogs

Buchempfehlungen