Introduzione alla programmazione socket in Python

Nella programmazione socket, la comunicazione viene stabilita tramite una rete tra due socket (nodi). Il server funge da porta di ascolto che ascolta un determinato IP e il socket client raggiunge il socket del server per la comunicazione. Per lavorare nella programmazione dei socket, dovremo importare la libreria dei socket fornita da Python.

Server socket Python

Un socket è un endpoint per inviare o ricevere dati, quindi abbiamo bisogno di un server e un programma socket client per questo scopo. Per il nostro programma di esempio, ospiteremo server e client sullo stesso computer. Possiamo persino inviare e ricevere tramite un codice server. Va notato che possiamo avere un solo programma server mentre possiamo avere più programmi client.

Il protocollo TCP (Transmission Control Protocol) è il protocollo predefinito scelto. TCP è affidabile poiché i pacchetti che vengono rilasciati nella rete vengono rilevati e trasmessi dal mittente. TCP fornisce anche la consegna dei dati in ordine, ovvero l'ordine in cui viene inviato dal mittente in un ordine simile che viene letto dall'applicazione.

server.py

Dai un'occhiata al programma qui sotto: server.py

Riga 3: Socket è una libreria preinstallata e per questo verrà creato un oggetto. Questo modulo socket viene importato nel programma python e verrà utilizzato come funzione socket più avanti nel programma. Stiamo creando un oggetto qui, che chiamerà la funzione socket.

Riga 4: socket.AF_INET corrisponde a IPV4 (Se si desidera utilizzare IPV6, è possibile utilizzare socket.AF_INET6. Questo si riferisce alla famiglia di socket. AF_INET specifica il protocollo che verrà utilizzato per la comunicazione. IPV4 e IPV6 sono diversi controlli di trasmissione modi o protocolli di trasmissione dei dati attraverso la rete.

IPV4 e IPV6 sono solo diversi tipi di indirizzi IP. Socket.AF_INET corrisponde a TCP. Il protocollo TCP (Transmission Control Protocol) funziona con l'IP e definisce il modo in cui il computer si scambiano i pacchetti di dati.

Successivamente è necessario TCP per questo avremo bisogno di un socket.SOCK_STREAM, che è il tipo di socket. TCP è un protocollo orientato alla connessione, essenzialmente prevede l'esecuzione di una connessione handshake a tre vie con un server e un client. Quindi forniamo un nome host in cui il client si connetterà.

Riga 5: per il nome host, è possibile utilizzare “localhost” o “127.0.01” o socket.gethostname () uno di questi. Ottiene l'indirizzo IP del server.

Quanto sopra sono i due parametri che definiamo per il socket.

Linea 6: di solito abbiamo molte porte nel nostro sistema, quindi dobbiamo fare uso di una porta host non utilizzata. È possibile utilizzare qualsiasi cifra a quattro cifre poiché sono occupate principalmente le cifre inferiori.

Riga 7: metodo bind (), che collega l'host e la porta a un socket.

Tutti questi passaggi sono necessari per avviare il nostro server. Ora, dobbiamo creare il client. Come accennato in precedenza, possiamo avere più clienti.

Linea 8: abbiamo un'opzione per menzionare il numero del client che può interagire con il server. Ciò è ottenuto da s.listen (6). Avvia il listener TCP. Il valore numerico rappresenta il numero di client che possono interagire. Se, ad esempio, arriva il 7 ° client, verrà eliminato.

Riga 9: s.accept () accetterà la richiesta dal client e restituisce due oggetti, uno è l'oggetto socket-client e l'altro è l'indirizzo. L'indirizzo IP sarà l'indirizzo del client in cui è presente il nostro client.

Riga 10: assomiglia di più a una notifica al server in merito alla connessione stabilita.

Infine, stampiamo un'istruzione che dovrebbe essere visualizzata quando entrambi i programmi sono in esecuzione nel terminale. Dopo che avremo finito con il nostro programma server, scriveremo il programma client.

Python Socket Client

Qui discutiamo del client socket python:

client.py

Ecco il nostro programma per il cliente: client.py

Il programma client ha anche un socket simile, come si vede nel caso del programma server. Di solito, il programma client viene eseguito dal programma server. Non è nella stessa macchina che abbiamo in questo esempio qui. Con i socket, ciò che intendiamo ottenere è comunicare tramite i programmi Python su una macchina collegata in rete locale o anche su macchine collegate in rete.

Riga 8: esiste un metodo binding () nel programma server, qui verrà utilizzato il metodo connect (). La tupla qui prenderà host e port nel metodo. Prendiamo la stessa porta che avevamo usato nel nostro server.py

Dobbiamo eseguire server.py e client.py in diversi terminali ed è così che vedremo verificarsi la connessione.

Produzione:

Lo screenshot proviene da due terminali diversi, uno aperto in CMD e l'altro aperto in PowerShell in Windows. La finestra di sinistra apre il programma server.py e il terminale a destra apre il programma client.py.

Vediamo l'output stampato nel terminale lato server.

Invio di stringhe da un file a un altro file

Proveremo a inviare un messaggio dal lato client al lato server. Scriveremo un messaggio nel programma client.py.

1. client.py

Ecco il nostro programma per il cliente: client.py

Riga 9 e Riga 10: impostiamo il messaggio in una variabile e inviamo il messaggio sotto forma di byte e lo convertiamo o lo codifichiamo nel formato UTF-8. (UTF è uno standard Unicode in quanto tutti i contenuti del messaggio sono caratteri e rientrano nel grafico Unicode). Dovremmo codificare e mantenere i dati il ​​più piccolo possibile, altrimenti la trasmissione fallirebbe in qualche momento.

Linea 11: chiudiamo la connessione.

Nel programma server, apporteremo le seguenti modifiche.

2. server.py

Ecco il nostro programma per il server: server.py

Riga 11: per creare la connessione, utilizziamo l'oggetto client socket. Stiamo citando la dimensione del buffer aggiungendo 1024 byte (1 KB) al metodo e manteniamo il messaggio variabile.

Riga 13: Quindi stiamo stampando il metodo.

Produzione:

Riapriamo entrambi i terminali e vediamo il seguente output.

Conclusione - Programmazione socket in Python

Le basi della programmazione dei socket sono state trattate qui, ma va notato che si tratta di un dominio enorme e ci sono molte altre cose da affrontare nella programmazione dei socket. Comprendere bene le basi aiuterebbe a gestire scenari complessi client-server.

Articoli consigliati

Questa è una guida alla programmazione dei socket in Python. Qui discutiamo il concetto di server socket python e client socket python con implementazione del codice. Puoi anche consultare i seguenti articoli per saperne di più -

  1. Cicli annidati Python
  2. Le 15 principali caratteristiche di Python
  3. Top 7 IDE Python per Windows
  4. Metodi diversi nei set Python

Categoria: