Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Python

Python Netzwerkprogrammierung: Sockets & erweiterte Protokolle meistern

Zugangsebenen zu Netzwerkdiensten

Python bietet zwei Ebenen für den Zugriff auf Netzwerkdienste:

Dieses Kapitel vermittelt Verständnis für das bekannteste Networking-Konzept: Socket Programming.

Was sind Sockets?

Sockets sind die Endpunkte eines bidirektionalen Kommunikationskanals. Sie können innerhalb eines Prozesses, zwischen Prozessen auf demselben Rechner oder zwischen Prozessen auf verschiedenen Kontinenten kommunizieren.

Sockets können über verschiedene Kanaltypen implementiert werden: Unix Domain Sockets, TCP, UDP etc. Die socket-Bibliothek stellt spezifische Klassen für gängige Transports sowie ein generisches Interface für den Rest bereit.

Socket-Vokabular

Nr.Begriff & Beschreibung
1Domain – Protokollfamilie als Transportmechanismus. Konstanten wie AF_INET, PF_INET, PF_UNIX, PF_X25 etc.
2type – Kommunikationsart zwischen Endpunkten. Typisch SOCK_STREAM (verbindungsorientiert) und SOCK_DGRAM (verbindungslos).
3protocol – Meist 0, kann Variante eines Protokolls innerhalb von Domain und Type identifizieren.
4hostname – Netzwerkschnittstellen-Identifier:
  • String: Hostname, dotted-quad Adresse oder IPv6 in Kolonnotation
  • "" für INADDR_BROADCAST
  • Leerer String für INADDR_ANY
  • Integer als binäre Adresse in Host-Byte-Reihenfolge
5port – Server lauscht auf einem oder mehreren Ports. Port kann Fixnum, String mit Portnummer oder Servicename sein.

Das socket-Modul

Zum Erstellen eines Sockets verwenden Sie socket.socket() aus dem socket-Modul:

s = socket.socket(socket_family, socket_type, protocol=0)

Parameter

Mit dem Socket-Objekt können Sie Client- oder Serverprogramme erstellen. Erforderliche Funktionen:

Server-Socket-Methoden

Nr.Methode & Beschreibung
1s.bind() – Bindet Adresse (Hostname, Port) an Socket.
2s.listen() – Richtet TCP-Listener ein und startet ihn.
3s.accept() – Akzeptiert passiv TCP-Clientverbindung, blockiert bis Verbindung eintrifft.

Client-Socket-Methoden

Nr.Methode & Beschreibung
1s.connect() – Initiiert aktiv TCP-Serververbindung.

Allgemeine Socket-Methoden

Nr.Methode & Beschreibung
1s.recv() – Empfängt TCP-Nachricht.
2s.send() – Sendet TCP-Nachricht.
3s.recvfrom() – Empfängt UDP-Nachricht.
4s.sendto() – Sendet UDP-Nachricht.
5s.close() – Schließt Socket.
6socket.gethostname() – Gibt Hostname zurück.

Ein einfacher Server

Für Internet-Server nutzen wir socket() aus dem socket-Modul zum Erstellen eines Socket-Objekts. Dieses ruft weitere Funktionen zum Einrichten des Servers auf.

Rufen Sie bind(hostname, port) auf, um einen Port für Ihren Dienst am gegebenen Host festzulegen. Dann rufen Sie accept() des zurückgegebenen Objekts auf. Diese Methode wartet, bis ein Client sich mit dem angegebenen Port verbindet, und gibt ein connection-Objekt zurück, das die Verbindung zu diesem Client repräsentiert.

#!/usr/bin/python
# server.py
import socket
s = socket.socket()
host = socket.gethostname()
port = 12345
s.bind((host, port))
s.listen(5)
while True:
    c, addr = s.accept()
    print('Got connection from', addr)
    c.send('Thank you for connecting')
    c.close()

Ein einfacher Client

Ein einfaches Client-Programm, das eine Verbindung zu Port 12345 und gegebenem Host öffnet:

#!/usr/bin/python
# client.py
import socket
s = socket.socket()
host = socket.gethostname()
port = 12345
s.connect((host, port))
print(s.recv(1024))
s.close()

Führen Sie server.py im Hintergrund aus, dann client.py:

$ python server.py &
$ python client.py

Ergebnis:

Got connection from ('127.0.0.1', 48437)
Thank you for connecting

Python Internet-Module

Wichtige Module für Python Network/Internet Programming:

ProtokollFunktionPortPython-Modul
HTTPWebseiten80httplib, urllib, xmlrpclib
NNTPUsenet News119nntplib
FTPDateiübertragung20ftplib, urllib
SMTPE-Mail senden25smtplib
POP3E-Mail abrufen110poplib
IMAP4E-Mail abrufen143imaplib
TelnetKommandozeilen23telnetlib
GopherDokumentübertragung70gopherlib, urllib

Prüfen Sie die genannten Bibliotheken für Arbeit mit FTP, SMTP, POP und IMAP.

Weiterführende Literatur

Dies war ein schneller Einstieg in Socket Programming. Es ist ein umfangreiches Thema. Empfohlene Links für Details:

Python

  1. Python-Datentypen meistern: Praxisleitfaden
  2. Python-Operatoren meistern: Umfassender Leitfaden
  3. Python pass-Statement meistern: Praxisleitfaden
  4. Python-Funktionsargumente meistern: Positional, Keyword & Default-Parameter
  5. Python-Dictionaries meistern: Erstellung, Manipulation und fortgeschrittene Techniken
  6. Python Objektorientierte Programmierung meistern: Klassen, Vererbung, Kapselung & Polymorphie
  7. Python Iteratoren meistern: Funktionsweise und Erstellung eigener Iteratoren
  8. Python Closures erklärt: Wie verschachtelte Funktionen Variablen erfassen
  9. Python datetime meistern: Praktischer Leitfaden zu Datumsangaben, Zeiten und Zeitzonen
  10. Pythons time.sleep() meistern: Best Practices, Multithreading und Praxisbeispiele