Verbindungsaufbau und Port-Nummern
Verbindungsaufbau und Port-Nummern
Daten, die über ein Netzwerk verschickt werden, müssen bei dem richtigen Computer ankommen. Deshalb besitzt jeder Computer (mindestens) eine IP-Adresse.
Wenn ein Computerprogramm gestartet wird, wird ein Prozess erzeugt. Zu einem Programm kann es also mehrere Prozesse geben - nämlich dann, wenn das Programm mehrmals gestartet wurde. Außerdem können Prozesse zu verschiedenen Programmen existieren. In der folgenden Abbildung kommt gerade ein Datenpaket über das Netzwerk an. Woher weiß der Computer, an welchen Prozess diese Daten weitergeleitet werden müssen? Dazu besitzt jeder Socket eine Port-Nummer:
Baut ein Client eine Verbindung zu einem Server auf, muss also die IP-Adresse und die Port-Nummer des Server angegeben werden.
Jeder Socket besitzt eine Port-Nummer. Das Betriebssystem verwendet diese Nummer, um ankommende Pakete dem richtigen Socket zuzuordnen.
In der Regel verwendet man ein Objekt, um auf einen Socket zuzugreifen.
Python stellt dafür das Modul socket
zur Verfügung.
Da die Arbeit mit diesem Modul jedoch recht umständlich ist, verwenden wir in diesem Kapitel die Klasse ISocket
(Abkürzung für InfSchuleSocket) aus der Datei socketLib.py
.
Der folgende Quellcode zeigt, wie ein Client eine Verbindung zu einem Server aufbaut:
# Klasse ISocket importieren
# Dieser Quellcode muss sich in einer Datei befinden,
# die im selben Verzeichnis wie die Datei socketLib.py
# gespeichert ist.
from socketLib import ISocket
# Kommunikationssocket erzeugen
komm_s = ISocket()
# Verbindung aufbauen
# Dazu müssen die IP-Adresse und
# Port-Nummer des Servers angegeben werden.
komm_s.verbinden('127.0.0.1', 5000)
Der Socket komm_s
des Clients besitzt ebenfalls eine Port-Nummer. Diese wird vom Betriebssystem des Clients automatisch gewählt.