Soll ein Python-Programm mit dem Netzwerk kommunizieren, kommen Protokolle wie TCP/UDP, HTTP oder SMTP zum Einsatz. Mit dem Socket-Modul in Python lassen sich diese Protokolle im eigenen Code nutzen.
Das Socket-Modul von Pythons erlaubt es, mithilfe der lokalen Daten die Netzwerk-Kommunikation zu realisieren.
(Bild: Joos / Python.org)
Das wichtigste Modul in Python, das für die Kommunikation des jeweiligen Programmcodes mit dem Netzwerk verantwortlich ist, stellt das Modul „socket“ dar. Das Modul stellt die Verbindung zwischen dem Python-Programm und dem Betriebssystem dar, auf dem das Programm läuft. Mit dem Modul „socketserver“ ist es wiederum möglich, Client-/Server-Programme mit Python zu betreiben, bei denen ein Serverpart auch mehrere Netzwerkverbindungen parallel aufbauen kann.
Das Socket-Modul in Python verstehen
Geht eine Netzwerkkommunikation ein, die für das jeweilige Programm gedacht ist, läuft das über einen Socket. Mit diesem Socket kommunizieren Programme zwischen verschiedenen Computern im Netzwerk zusammen, zum Beispiel Clients und Server.
Quell- und Ziel-Sockets können sich auf verschiedenen Rechnern, in verschiedenen Netzwerken oder auch im Internet verbinden. Wichtig ist nur, dass es eine physische Verbindung gibt, zwischen denen Programme über die Sockets kommunizieren können. Die Sockets kommen nicht nur bei Python zum Einsatz, sondern auch in anderen Programmiersprachen.
Bei der Programmierung einer Client-/Server-Anwendung mit Python kommt auf dem Server ein Verbindungssocket zum Einsatz. Dieses wartet auf Verbindungen der Clients. Zum Einsatz kommen die Methoden „bind“ und „list“. Mit diesen Methoden wartet ein Python-Programm auf eingehende Anfragen im Netzwerk. Gehen Verbindungen ein, überprüft das Python-Programm, ob diese berechtigt sind, und baut eine Verbindung mit dem Socket des Clients auf.
Für einen Socket lassen sich verschiedene Methoden nutzen, um die Verbindung zwischen Client und Server aufzubauen und zu kommunizieren. Dazu kommen normalerweise folgende Methoden zum Einsatz:
s.bind() – Diese Methode bindet die Adresse, den Namen und den Port an den Socket
s.list() – Diese Methode wartet auf Verbindungen und startet normalerweise einen TCP-Listener
s.accept() – Diese Methode akzeptiert eingehende Verbindungen von Clients.
Kommunikations-Sockets für Clients
Dazu wird ein Kommunikation-Socket aufgebaut, über den der jeweilige Client und Server miteinander kommunizieren. Der Client nutzt für den Aufbau die Methode „connect“. Zur Kommunikation dienen Methoden wie „send“ und „recv“. Natürlich kann ein Server auch mehrere Kommunikations-Sockets aufbauen, da in den meisten Fällen nicht nur ein Client mit dem Server kommuniziert.
Standardmäßig kommen für die Kommunikation zunächst TCP und UDP zum Einsatz. In den meisten Fällen verwenden Programme das TCP-Protokoll. Der Aufbau eines Socket erfolgt durch die Funktion „socket ()“ mit folgender Syntax:
socket.socket([family[, type[, proto]]])
Die erwähnten Methonden „send“ und „recv“ dienen Clients dazu, Daten an den Server zu senden oder generell auf Servern und Clients, um über das Netzwerk zu kommunizieren. Hier spielen folgende Methoden eine Rolle:
s.connect() – Diese Methode initiiert aktiv eine TCP-Serververbindung vom Client auf dem Server.
s.recv() – Die Methode kommt auf Servern und Clients zum Einsatz, um TCP-Pakete zu erhalten.
s.send() – Die Methode hat auf dem Client und dem Server die Aufgabe TCP-Pakete zu senden.
Soll auch das verbindungslose UDP-Protokoll zum Einsatz kommen, werden die Methoden „s.recvfrom()“ und „s.sendto()“ genutzt. Um nach der Kommunikation einen Socket wieder freizugeben, wird dieser geschlossen. Dazu kommt die Methode „s.close()“ zum Einsatz.
Beispiel-Funktionen für die Netzwerkkommunikation mit Python
Der folgende Code beispielsweise öffnet auf dem Server einen Socket:
Mit dem Socket-Modul lassen sich die Daten des lokalen Computers nutzen, um eine Netzwerkkommunikation aufzubauen.
(Bild: Joos / Python.org)
Name oder IP-Adresse des aktuellen Computers lassen sich mit „socket.gethostname()“ in Python abfragen. Dabei gibt die Funktion „gethostname()“ zunächst den Namen des Computers aus. Soll auch die IP-Adresse ausgelesen und angezeigt werden, kommt folgende Zeile zum Einsatz:
print(socket.gethostbyname(socket.gethostname()))
Ist der Computer auch mit dem Internet verbunden, kann auch die Funktion „socket.getsockname()“ zum Einsatz kommen, um die lokale IP-Adresse des Python-Rechners zu nutzen, zum Beispiel:
import socket s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect(("8.8.8.8", 80)) print(s.getsockname()[0])
Nutzen der Funktion socket.getsockname() für die Kommunikation von Python-Programmen mit dem Internet.
(Bild: Joos / Python.org)
Beim Öffnen eines Socket wird auch der Transportmechanismus festgelegt. Dabei kann es sich um Konstanten wie „AF_INET“, „PF_INET“, „PF_UNIX“ oder „PF_X25“ handeln. Auch die Art der Kommunikation wird an dieser Stelle angegeben, zum Beispiel „SOCK_STREAM“ für verbindungsorientierte Protokolle und „SOCK_DGRAM“ für verbindungslose Protokolle.
Zu guter Letzt lässt sich auch das Protokoll an dieser Stelle definieren, um eine Variante eines Protokolls innerhalb eines Bereichs und Typs zu identifizieren. Beim Öffnen eines Sockets ist der Identifier und unter Umständen auch der Port für den Aufbau des Sockets notwendig.
Um die Sockets für die Kommunikation mit dem http-Protokoll zu nutzen, kommen zum Beispiel die Module „httplib“, „urllib“ oder „xmlrpclib“ zum Einsatz. Zum Versenden von E-Mails aus Python-Programmen heraus kann das SMTP-Protokoll zum Einsatz kommen. Dieses lässts ich in Python mit dem Modul „smtplib“ nutzen.
Stand: 08.12.2025
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel IT-Medien GmbH, Max-Josef-Metzger-Straße 21, 86157 Augsburg, einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von Newslettern und Werbung nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung.
Server vor dem Verbindungsaufbau anpingen
Vor dem Verbindungsaufbau mit einem Server, kann vom Client aus auch ein Ping in Python über ICMP genutzt werden, mit dem der erfolgreiche Verbindungsaufbau getestet werden kann. Dazu kann zum Beispiel das Modul „ping3“ zum Einsatz kommen. Installiert wird dieses zum Beispiel mit:
pip install ping3
Nach der Installation des Moduls kann die Methode ping() zum Einsatz kommen:
from ping3 import ping def myping(host): resp = ping(host) if resp == False: return False else: return True print(myping("www.google.com"))