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

Python - Netzwerkprogrammierung

Vorherige SeiteNächste Seite

Python bietet zwei Zugriffsebenen auf Netzwerkdienste. Auf einer niedrigen Ebene können Sie auf die grundlegende Socket-Unterstützung im zugrunde liegenden Betriebssystem zugreifen, wodurch Sie Clients und Server sowohl für verbindungsorientierte als auch für verbindungslose Protokolle implementieren können.

Python verfügt auch über Bibliotheken, die einen übergeordneten Zugriff auf bestimmte Netzwerkprotokolle auf Anwendungsebene wie FTP, HTTP usw. bieten.

Dieses Kapitel vermittelt Ihnen ein Verständnis für das bekannteste Konzept der Netzwerktechnik - Socket-Programmierung.

Was ist Sockets?

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

Sockets können über eine Reihe unterschiedlicher Kanaltypen implementiert werden:Unix-Domain-Sockets, TCP, UDP und so weiter. Die Buchse Die Bibliothek bietet spezifische Klassen für die Handhabung der üblichen Transporte sowie eine generische Schnittstelle für die Handhabung des Rests.

Sockets haben ihr eigenes Vokabular −

Sr.No. Begriff &Beschreibung
1

Domäne

Die Protokollfamilie, die als Transportmechanismus verwendet wird. Diese Werte sind Konstanten wie AF_INET, PF_INET, PF_UNIX, PF_X25 usw.

2

Typ

Die Art der Kommunikation zwischen den beiden Endpunkten, typischerweise SOCK_STREAM für verbindungsorientierte Protokolle und SOCK_DGRAM für verbindungslose Protokolle.

3

Protokoll

Normalerweise null, kann dies verwendet werden, um eine Variante eines Protokolls innerhalb einer Domäne und eines Typs zu identifizieren.

4

Hostname

Die Kennung einer Netzwerkschnittstelle −

  • Eine Zeichenfolge, bei der es sich um einen Hostnamen, eine Punktquadratadresse oder eine IPV6-Adresse in Doppelpunkt- (und möglicherweise Punkt-) Schreibweise handeln kann

  • Eine Zeichenfolge "", die eine INADDR_BROADCAST-Adresse angibt.

  • Eine Zeichenfolge der Länge Null, die INADDR_ANY oder

    angibt
  • Eine Ganzzahl, die als Binäradresse in Host-Byte-Reihenfolge interpretiert wird.

5

Port

Jeder Server wartet auf Clients, die einen oder mehrere Ports anrufen. Ein Port kann eine Fixnum-Portnummer, eine Zeichenfolge mit einer Portnummer oder der Name eines Dienstes sein.

Die Buchse Modul

Um einen Socket zu erstellen, müssen Sie socket.socket() verwenden Funktion im Socket verfügbar Modul, das die allgemeine Syntax −

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

Hier ist die Beschreibung der Parameter −

Sobald Sie Socket haben -Objekt, dann können Sie die erforderlichen Funktionen verwenden, um Ihr Client- oder Serverprogramm zu erstellen. Es folgt die Liste der erforderlichen Funktionen −

Server-Socket-Methoden

Sr.No. Methode &Beschreibung
1

s.bind()

Diese Methode bindet Adresse (Hostname, Portnummernpaar) an Socket.

2

s.listen()

Diese Methode richtet den TCP-Listener ein und startet ihn.

3

s.accept()

Dies akzeptiert passiv die TCP-Client-Verbindung und wartet, bis die Verbindung ankommt (blockiert).

Client-Socket-Methoden

Sr.No. Methode &Beschreibung
1

s.connect()

Diese Methode initiiert aktiv die TCP-Serververbindung.

Allgemeine Socket-Methoden

Sr.No. Methode &Beschreibung
1

s.recv()

Diese Methode empfängt eine TCP-Nachricht

2

s.send()

Diese Methode überträgt eine TCP-Nachricht

3

s.recvfrom()

Diese Methode empfängt eine UDP-Nachricht

4

s.sendto()

Diese Methode überträgt eine UDP-Nachricht

5

s.close()

Diese Methode schließt Socket

6

socket.gethostname()

Gibt den Hostnamen zurück.

Ein einfacher Server

Um Internetserver zu schreiben, verwenden wir den Socket im Socket-Modul verfügbare Funktion zum Erstellen eines Socket-Objekts. Ein Socket-Objekt wird dann verwendet, um andere Funktionen zum Einrichten eines Socket-Servers aufzurufen.

Rufen Sie nun bind(hostname, port) auf Funktion, um einen Port anzugeben für Ihren Dienst auf dem angegebenen Host.

Rufen Sie als Nächstes accept auf Methode des zurückgegebenen Objekts. Diese Methode wartet, bis sich ein Client mit dem von Ihnen angegebenen Port verbindet, und gibt dann eine Verbindung zurück Objekt, das die Verbindung zu diesem Client darstellt.

#!/usr/bin/python           # This is server.py file

import socket               # Import socket module

s = socket.socket()         # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345                # Reserve a port for your service.
s.bind((host, port))        # Bind to the port

s.listen(5)                 # Now wait for client connection.
while True:
   c, addr = s.accept()     # Establish connection with client.
   print 'Got connection from', addr
   c.send('Thank you for connecting')
   c.close()                # Close the connection

Ein einfacher Client

Lassen Sie uns ein sehr einfaches Client-Programm schreiben, das eine Verbindung zu einem gegebenen Port 12345 und einem gegebenen Host öffnet. Es ist sehr einfach, einen Socket-Client mit Pythons socket zu erstellen Modulfunktion.

Die socket.connect(hosname, port ) öffnet eine TCP-Verbindung zu hostname am Hafen . Sobald Sie einen Socket geöffnet haben, können Sie ihn wie jedes andere IO-Objekt lesen. Wenn Sie fertig sind, denken Sie daran, es zu schließen, wie Sie eine Datei schließen würden.

Der folgende Code ist ein sehr einfacher Client, der sich mit einem gegebenen Host und Port verbindet, alle verfügbaren Daten aus dem Socket liest und dann −

beendet
#!/usr/bin/python           # This is client.py file

import socket               # Import socket module

s = socket.socket()         # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345                # Reserve a port for your service.

s.connect((host, port))
print s.recv(1024)
s.close()                     # Close the socket when done

Führen Sie nun diese server.py im Hintergrund aus und führen Sie sie dann oberhalb von client.py aus, um das Ergebnis zu sehen.

# Following would start a server in background.
$ python server.py & 

# Once server is started run client as follows:
$ python client.py

Dies würde folgendes Ergebnis erzeugen −

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

Python-Internetmodule

Eine Liste einiger wichtiger Module in der Python-Netzwerk-/Internetprogrammierung.

Protokoll Gemeinsame Funktion Portnummer Python-Modul
HTTP Webseiten 80 httplib, urllib, xmlrpclib
NNTP Usenet-Neuigkeiten 119 nntplib
FTP Dateiübertragungen 20 ftplib, urllib
SMTP E-Mail senden 25 smtplib
POP3 E-Mails abrufen 110 poplib
IMAP4 E-Mails abrufen 143 imaplib
Telnet Befehlszeilen 23 telnetlib
Gopher Dokumentenübertragungen 70 gopherlib, urllib

Bitte überprüfen Sie alle oben genannten Bibliotheken, um mit FTP-, SMTP-, POP- und IMAP-Protokollen zu arbeiten.

Weiterführende Literatur

Dies war ein schneller Einstieg in die Socket-Programmierung. Es ist ein riesiges Thema. Es wird empfohlen, den folgenden Link zu durchlaufen, um weitere Details zu finden −


Python

  1. Python-Datentypen
  2. Python-Operatoren
  3. Python-pass-Anweisung
  4. Python-Funktionsargumente
  5. Python-Wörterbuch
  6. Python objektorientierte Programmierung
  7. Python-Iteratoren
  8. Python-Schließungen
  9. Python-Datetime
  10. Python-Schlaf()