Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Python
Python - Netwerkprogrammering
Vorige paginaVolgende pagina

Python biedt twee toegangsniveaus tot netwerkservices. Op een laag niveau hebt u toegang tot de basissocketondersteuning in het onderliggende besturingssysteem, waarmee u clients en servers kunt implementeren voor zowel verbindingsgerichte als verbindingsloze protocollen.

Python heeft ook bibliotheken die toegang op een hoger niveau bieden tot specifieke netwerkprotocollen op applicatieniveau, zoals FTP, HTTP, enzovoort.

Dit hoofdstuk geeft u inzicht in het meest bekende concept in netwerken - Socket Programming.

Wat is sockets?

Sockets zijn de eindpunten van een bidirectioneel communicatiekanaal. Sockets kunnen communiceren binnen een proces, tussen processen op dezelfde machine of tussen processen op verschillende continenten.

Sockets kunnen worden geïmplementeerd via een aantal verschillende kanaaltypen:Unix-domeinsockets, TCP, UDP, enzovoort. De aansluiting bibliotheek biedt specifieke klassen voor het afhandelen van de gemeenschappelijke transporten en een generieke interface voor het afhandelen van de rest.

Sockets hebben hun eigen woordenschat −

Sr.Nr. Termijn en beschrijving
1

Domein

De familie van protocollen die als transportmechanisme wordt gebruikt. Deze waarden zijn constanten zoals AF_INET, PF_INET, PF_UNIX, PF_X25, enzovoort.

2

type

Het type communicatie tussen de twee eindpunten, meestal SOCK_STREAM voor verbindingsgerichte protocollen en SOCK_DGRAM voor verbindingsloze protocollen.

3

protocol

Meestal nul, dit kan worden gebruikt om een ​​variant van een protocol binnen een domein en type te identificeren.

4

hostnaam

De identifier van een netwerkinterface −

  • Een tekenreeks, die een hostnaam, een adres met vier punten of een IPV6-adres in dubbele punt (en mogelijk punt) kan zijn

  • Een tekenreeks "", die een INADDR_BROADCAST-adres specificeert.

  • Een tekenreeks met lengte nul, die INADDR_ANY specificeert, of

  • Een geheel getal, geïnterpreteerd als een binair adres in hostbytevolgorde.

5

poort

Elke server luistert naar clients die een of meer poorten aanroepen. Een poort kan een Fixnum-poortnummer zijn, een string met een poortnummer of de naam van een dienst.

De aansluiting Module

Om een ​​socket te maken, moet u de socket.socket() . gebruiken functie beschikbaar in socket module, die de algemene syntaxis heeft −

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

Hier is de beschrijving van de parameters −

  • socket_family − Dit is AF_UNIX of AF_INET, zoals eerder uitgelegd.

  • socket_type − Dit is SOCK_STREAM of SOCK_DGRAM.

  • protocol − Dit wordt meestal weggelaten en staat standaard op 0.

Zodra je socket . hebt object, dan kunt u de vereiste functies gebruiken om uw client- of serverprogramma te maken. Hieronder volgt de lijst met vereiste functies −

Server Socket-methoden

Sr.nr. Methode en beschrijving
1

s.bind()

Deze methode bindt adres (hostnaam, poortnummerpaar) aan socket.

2

s.listen()

Deze methode stelt de TCP-listener in en start deze.

3

s.accept()

Dit accepteert passief de TCP-clientverbinding, wachtend tot de verbinding arriveert (blokkering).

Client Socket-methoden

Sr.nr. Methode en beschrijving
1

s.connect()

Deze methode initieert actief de TCP-serververbinding.

Algemene socketmethoden

Sr.Nr. Methode en beschrijving
1

s.recv()

Deze methode ontvangt een TCP-bericht

2

s.send()

Deze methode verzendt een TCP-bericht

3

s.recvfrom()

Deze methode ontvangt een UDP-bericht

4

s.sendto()

Deze methode verzendt een UDP-bericht

5

s.close()

Deze methode sluit socket

6

socket.gethostname()

Retourneert de hostnaam.

Een eenvoudige server

Om internetservers te schrijven, gebruiken we de socket functie beschikbaar in socketmodule om een ​​socketobject te maken. Een socket-object wordt dan gebruikt om andere functies aan te roepen om een ​​socketserver in te stellen.

Bel nu bind(hostnaam, poort) functie om een ​​poort op te geven voor uw service op de opgegeven host.

Bel vervolgens de accept methode van het geretourneerde object. Deze methode wacht totdat een client verbinding maakt met de poort die u hebt opgegeven, en retourneert vervolgens een verbinding object dat de verbinding met die client vertegenwoordigt.

#!/usr/bin/python # Dit is server.py fileimport socket # Importeer socketmodules =socket.socket() # Maak een socket objecthost =socket.gethostname() # Haal de lokale machine op nameport =12345 # Reserveer een poort voor uw service.s.bind((host, poort)) # Bind aan de ports.listen(5) # Wacht nu op clientverbinding.while True:c, addr =s.accept() # Maak verbinding met de klant. print 'Kreeg verbinding van', addr c.send('Bedankt voor het verbinden') c.close() # Sluit de verbinding

Een eenvoudige klant

Laten we een heel eenvoudig clientprogramma schrijven dat een verbinding opent met een bepaalde poort 12345 en een bepaalde host. Dit is heel eenvoudig om een ​​socket-client te maken met behulp van Python's socket modulefunctie.

De socket.connect(hosname, port ) opent een TCP-verbinding met hostnaam op de poort . Zodra u een socket open heeft, kunt u ervan lezen zoals elk IO-object. Als u klaar bent, vergeet dan niet om het te sluiten, zoals u een bestand zou sluiten.

De volgende code is een zeer eenvoudige client die verbinding maakt met een bepaalde host en poort, alle beschikbare gegevens van de socket leest en vervolgens afsluit −

#!/usr/bin/python # Dit is client.py fileimport socket # Importeer socketmodules =socket.socket() # Maak een socket objecthost =socket.gethostname() # Haal de lokale machine op nameport =12345 # Reserveer een poort voor uw service.s.connect((host, poort))print s.recv(1024)s.close() # Sluit de socket als u klaar bent

Voer nu deze server.py op de achtergrond uit en voer vervolgens boven client.py uit om het resultaat te zien.

# Het volgende zou een server op de achtergrond starten.$ python server.py &# Zodra de server is gestart, voert u de client als volgt uit:$ python client.py

Dit zou het volgende resultaat opleveren −

Verbinding ontvangen van ('127.0.0.1', 48437)Bedankt voor het verbinden

Python-internetmodules

Een lijst met enkele belangrijke modules in Python Network/Internet-programmering.

Protocol Algemene functie Poort nr. Python-module
HTTP Webpagina's 80 httplib, urllib, xmlrpclib
NNTP Usenet-nieuws 119 nntplib
FTP Bestandsoverdrachten 20 ftplib, urllib
SMTP E-mail verzenden 25 smtplib
POP3 E-mail ophalen 110 poplib
IMAP4 E-mail ophalen 143 imaplib
Telnet Opdrachtregels 23 telnetlib
Gopher Documentoverdrachten 70 gopherlib, urllib

Controleer alle bovengenoemde bibliotheken om te werken met FTP-, SMTP-, POP- en IMAP-protocollen.

Verdere metingen

Dit was een snelle start met Socket Programming. Het is een uitgebreid onderwerp. Het wordt aanbevolen om de volgende link te gebruiken om meer details te vinden −

  • Unix Socket-programmering.

  • Python Socket-bibliotheek en -modules.


Python

  • C Taal
  •   
  • VHDL
  •   
  • Verilog
  •   
  • MATLAB
  •   
  • Python
  •   
  • Java
    1. Python objectgeoriënteerd programmeren
    2. Python @property decorateur
    3. Python-zoekwoorden en -identificaties
    4. Python List count() with EXAMPLES
    5. Python Controleer of bestand bestaat | Controleren of er een directory bestaat in Python
    6. Hoe krijg ik de huidige datum en tijd in Python?