際際滷

際際滷Share a Scribd company logo
GESTIONE SOCKET CON PYTHON
A cura dellIng Buttolo Marco
Introduzione ai socket
I Socket sono una tecnologia informatica nata per poter fare
comunicare processi sia residenti su host (computer) differenti
sia sullo stesso host (processi locali -> Inter-Process
Communication).
Per essere pi湛 precisi, il concetto di socket si basa sul modello di
gestione I/O per i file Unix, quindi sulle classiche operazioni
di apertura, chiusura, lettura e scrittura. L'utilizzo, infatti, avviene
secondo le stesse modalit, aggiungendo i parametri utili alla
comunicazione, quali indirizzi, numeri di porta e protocolli.
Introduzione ai socket
In queste slides vediamo come fare comunicare via socket un programma scritto in C# su una
macchina con installato Windows 10 con un programma scritto in Python installato su una macchina
vistuale Linux Ubuntu. Per quanto riguarda il lato client si utilizza come I.D.E (Integrated Development
Environment) Visual studio di casa Microsoft. Lapplicazione mostrata in questa demo 竪 una
applicazione client del tipo desktop con una semplice interfaccia grafica che permette alloperatore
di inviare dati al server socket scritto in Python e funzionante sun una macchina virtuale con
installato Linux Ubuntu.
Server Socket
Il server socket 竪 scritto in Python su sistema operativo
Ubuntu. Lo script Python 竪 piuttosto banale e si concentra
tutto nel metodo MAIN (lentry point del programma):
 CREAZIONE OGGETTO SOCKET
 BINDING SOCKET CON INDIRIZZO E PORTA
 SERVER RIMANE IN ATTESA DI RICEZIONE DATI DA CLIENT
Client Socket
Il client 竪 sviluppato su sistemi operativi windows sfruttando
Visual studio e sviluppando in Visual C#.
La creazione di un oggetto di tipo socket TCP viene svolto nel
metodo Form1_Load quando viene caricato il form per la
prima volta. Cliccando sul pulsante, dopo aver scritto qualcosa
nella relativa textBox 竪 possibile inviare al server il messaggio.
Interfaccia client
Lato script Python su Raspberry
Avviando lo script Python verr visualizzato il messaggio
inserito nella textBox del programma client lato windows
scritto in Visual C#.
Per quanto riguarda la parte Linux. Munirsi di una macchina
virtuale (usando Wmware workstation player
(https://www.vmware.com/it/products/workstation-
player/workstation-player-evaluation.html)) su cui installare il
sistema operativo Ubuntu. Per fare ci嘆 竪 necessario avere una
macchina Windows 7, Windows 8, Windows 10 professional
oppure basta fare lupgrade dalla versione Home alla versione
professional.
Test con Socket
Socket Test 竪 un simulatore client/server per poter testare
applicazioni che lavorano con i socket.
http://sockettest.sourceforge.net/
Tipologia di socket
I socket, come gi accennato, sono dei sistemi software che permettono la comunicazione tra processi. Ci sono due tipi fondamentali di socket:
 socket tradizionali su protocollo IP , usati per le comunicazioni attraverso un protocollo di trasporto;
 Unix domain socket (detti anche socket locali o socket in dominio Unix), usati nei sistemi operativi posix per le comunicazioni tra processi residenti sullo stesso pc.
Inoltre unaltra grossolana suddivisione dei socket 竪 la seguente:
 Stream socket: connection oriented, basati su TCP;
 Datagram socket: connectionless, basati su UDP;
 Raw socket: utilizzati per lo sviluppo di protocolli.
Ricapitolando.
Ogni socket 竪 di fatto 束collegato損 ad una porta di un PC. Ogni socket ha un indirizzo (indirizzo IP, numero porta). I socket consentono la comunicazione tra
processi sfruttando i protocolli UDP e TCP.
Il protocollo UDP (User Datagram Protocol) 竪 un protocollo del livello di trasporto del modello ISO-OSI e viene usato per trasferire datagrammi senza
operazioni di feedback ossia lacknowledge ed eventualmente la ritrasmissione del pacchetto (datagramma). Quindi il protocollo UDP non offre garanzia di
consegna del pacchetto al destinatario. Questo protocollo ha un overhead basso.
Il protocollo TCP (Trasmission Control Protocol) 竪 invece affidabile ed orientato alla connessione. Ha per嘆 un overhead pi湛 alto.
Varie ed eventuali
La comunicazione tra processi pu嘆 essere sincrona o asincrona.
Nella comunicazione sincrona le operazioni di send (invio messaggio) e receive (ricezione messaggio) sono bloccanti. In poche parole, i dati trasmessi devono
essere stati ricevuti prima di poter andare avanti
Nella comunicazione asincrona loperazione send 竪 non bloccante. In poche parole, il messaggio viene copiato in un buffer, e poi il processo mittente pu嘆
proseguire, mentre il messaggio viene trasmesso. Loperazione receive 竪 normalmente bloccante
Grazie mille per la vostra attenzione!!!
Per maggiori chiarimenti contattatemi pure: mbuttolo@libero.it
www.marcobuttolo.com

More Related Content

Socket python

  • 1. GESTIONE SOCKET CON PYTHON A cura dellIng Buttolo Marco
  • 2. Introduzione ai socket I Socket sono una tecnologia informatica nata per poter fare comunicare processi sia residenti su host (computer) differenti sia sullo stesso host (processi locali -> Inter-Process Communication). Per essere pi湛 precisi, il concetto di socket si basa sul modello di gestione I/O per i file Unix, quindi sulle classiche operazioni di apertura, chiusura, lettura e scrittura. L'utilizzo, infatti, avviene secondo le stesse modalit, aggiungendo i parametri utili alla comunicazione, quali indirizzi, numeri di porta e protocolli.
  • 3. Introduzione ai socket In queste slides vediamo come fare comunicare via socket un programma scritto in C# su una macchina con installato Windows 10 con un programma scritto in Python installato su una macchina vistuale Linux Ubuntu. Per quanto riguarda il lato client si utilizza come I.D.E (Integrated Development Environment) Visual studio di casa Microsoft. Lapplicazione mostrata in questa demo 竪 una applicazione client del tipo desktop con una semplice interfaccia grafica che permette alloperatore di inviare dati al server socket scritto in Python e funzionante sun una macchina virtuale con installato Linux Ubuntu.
  • 4. Server Socket Il server socket 竪 scritto in Python su sistema operativo Ubuntu. Lo script Python 竪 piuttosto banale e si concentra tutto nel metodo MAIN (lentry point del programma): CREAZIONE OGGETTO SOCKET BINDING SOCKET CON INDIRIZZO E PORTA SERVER RIMANE IN ATTESA DI RICEZIONE DATI DA CLIENT
  • 5. Client Socket Il client 竪 sviluppato su sistemi operativi windows sfruttando Visual studio e sviluppando in Visual C#. La creazione di un oggetto di tipo socket TCP viene svolto nel metodo Form1_Load quando viene caricato il form per la prima volta. Cliccando sul pulsante, dopo aver scritto qualcosa nella relativa textBox 竪 possibile inviare al server il messaggio.
  • 7. Lato script Python su Raspberry Avviando lo script Python verr visualizzato il messaggio inserito nella textBox del programma client lato windows scritto in Visual C#. Per quanto riguarda la parte Linux. Munirsi di una macchina virtuale (usando Wmware workstation player (https://www.vmware.com/it/products/workstation- player/workstation-player-evaluation.html)) su cui installare il sistema operativo Ubuntu. Per fare ci嘆 竪 necessario avere una macchina Windows 7, Windows 8, Windows 10 professional oppure basta fare lupgrade dalla versione Home alla versione professional.
  • 8. Test con Socket Socket Test 竪 un simulatore client/server per poter testare applicazioni che lavorano con i socket. http://sockettest.sourceforge.net/
  • 9. Tipologia di socket I socket, come gi accennato, sono dei sistemi software che permettono la comunicazione tra processi. Ci sono due tipi fondamentali di socket: socket tradizionali su protocollo IP , usati per le comunicazioni attraverso un protocollo di trasporto; Unix domain socket (detti anche socket locali o socket in dominio Unix), usati nei sistemi operativi posix per le comunicazioni tra processi residenti sullo stesso pc. Inoltre unaltra grossolana suddivisione dei socket 竪 la seguente: Stream socket: connection oriented, basati su TCP; Datagram socket: connectionless, basati su UDP; Raw socket: utilizzati per lo sviluppo di protocolli.
  • 10. Ricapitolando. Ogni socket 竪 di fatto 束collegato損 ad una porta di un PC. Ogni socket ha un indirizzo (indirizzo IP, numero porta). I socket consentono la comunicazione tra processi sfruttando i protocolli UDP e TCP. Il protocollo UDP (User Datagram Protocol) 竪 un protocollo del livello di trasporto del modello ISO-OSI e viene usato per trasferire datagrammi senza operazioni di feedback ossia lacknowledge ed eventualmente la ritrasmissione del pacchetto (datagramma). Quindi il protocollo UDP non offre garanzia di consegna del pacchetto al destinatario. Questo protocollo ha un overhead basso. Il protocollo TCP (Trasmission Control Protocol) 竪 invece affidabile ed orientato alla connessione. Ha per嘆 un overhead pi湛 alto.
  • 11. Varie ed eventuali La comunicazione tra processi pu嘆 essere sincrona o asincrona. Nella comunicazione sincrona le operazioni di send (invio messaggio) e receive (ricezione messaggio) sono bloccanti. In poche parole, i dati trasmessi devono essere stati ricevuti prima di poter andare avanti Nella comunicazione asincrona loperazione send 竪 non bloccante. In poche parole, il messaggio viene copiato in un buffer, e poi il processo mittente pu嘆 proseguire, mentre il messaggio viene trasmesso. Loperazione receive 竪 normalmente bloccante
  • 12. Grazie mille per la vostra attenzione!!! Per maggiori chiarimenti contattatemi pure: mbuttolo@libero.it www.marcobuttolo.com

Editor's Notes

  1. In modalit Presentazione seleziona le frecce per visitare i collegamenti.