SlideShare a Scribd company logo
GESTIONE SOCKET CON PYTHON
A cura dell’Ing 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. L’applicazione mostrata in questa demo è una
applicazione client del tipo desktop con una semplice interfaccia grafica che permette all’operatore
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 (l’entry 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 l’upgrade 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 un’altra 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 l’acknowledge 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 l’operazione 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. L’operazione receive è normalmente bloccante
Grazie mille per la vostra attenzione!!!
Per maggiori chiarimenti contattatemi pure: mbuttolo@libero.it
www.marcobuttolo.com

More Related Content

PPTX
Post gresql su_raspberry
PPTX
Installazione ambientepython ubuntumate
PPTX
Introduzione ros
PPTX
Protocollo ssh
PDF
Compilazione Kernel
PPTX
Tools & librerie PHP
PDF
Richiami su Linux - Webmin - Reti di calcolatori
Post gresql su_raspberry
Installazione ambientepython ubuntumate
Introduzione ros
Protocollo ssh
Compilazione Kernel
Tools & librerie PHP
Richiami su Linux - Webmin - Reti di calcolatori

What's hot (20)

PDF
pugBO #10 PSR e Composer
ODP
Linux Capabilities - ita - v2.1.5 - compatta
PDF
GNU Linux Programming introduction
PDF
Corso Bash
ODP
Seminario introduzione all'uso del terminale e della bash in Linux
PDF
Accesso remoto al proprio computer in una rete eterogenea
PDF
Installazione di koha_su_debian_v2_0_20_12_2014
PDF
PostgreSQL : Tuning
PDF
Chi ha paura della command-line? - WordCamp Roma 2018
PDF
Tom EE appunti devoxx2012
PPT
X2 Linux Riassunti
PDF
PostgreSQL: Prima configurazione
PDF
GNU Linux introduction
PPTX
Linux shell
PPT
Java lezione 15
PDF
Arduino tre tomcat
PDF
MontelLUG - Conferenze 2007 - Introduzione a RSync
PDF
Linux Kernel, driver e compilazione
PDF
Libro windows 7 reti sicurezza tecniche avanzate
pugBO #10 PSR e Composer
Linux Capabilities - ita - v2.1.5 - compatta
GNU Linux Programming introduction
Corso Bash
Seminario introduzione all'uso del terminale e della bash in Linux
Accesso remoto al proprio computer in una rete eterogenea
Installazione di koha_su_debian_v2_0_20_12_2014
PostgreSQL : Tuning
Chi ha paura della command-line? - WordCamp Roma 2018
Tom EE appunti devoxx2012
X2 Linux Riassunti
PostgreSQL: Prima configurazione
GNU Linux introduction
Linux shell
Java lezione 15
Arduino tre tomcat
MontelLUG - Conferenze 2007 - Introduzione a RSync
Linux Kernel, driver e compilazione
Libro windows 7 reti sicurezza tecniche avanzate
Ad

Similar to Socket python (20)

PPT
13 Linux Network Comandi
PDF
IoT: protocolli, dispositivi, architetture
PPT
Tesi Asterisk: CONFIGURAZIONE DI UN SERVIZIO VOIP CON ASTERISK
PDF
Connext ita
PPTX
Soluzioni per la difesa da attacchi DoS nelle reti SDN
PPTX
Come funziona il voip
PPT
9 Intranetting
ODP
Reti Domestiche
PDF
Crouzet Automation - em4 Ethernet opuscolo, versione italiana
PPT
2 Protocolli Applicativi
PPT
3 Livello Trasporto
PPSX
Sistemi e reti : Il livello di trasporto
PDF
Progettazione e sviluppo di un software applicativo su un single board computer
PPT
Concetti base di informatica
PPTX
PALUZZANO PRELAUREA
PPTX
Strutturazione delle Reti
PPTX
Azure IoTHub - Roboval 2018
PDF
CommSEC - linea prodotti InterLINK (IT)
PDF
EuComm
PPTX
REALIZZAZIONE DI UN SOFTWARE DI COMUNICAZIONE MULTIPROTOCOLLO PER IL CONTROLL...
13 Linux Network Comandi
IoT: protocolli, dispositivi, architetture
Tesi Asterisk: CONFIGURAZIONE DI UN SERVIZIO VOIP CON ASTERISK
Connext ita
Soluzioni per la difesa da attacchi DoS nelle reti SDN
Come funziona il voip
9 Intranetting
Reti Domestiche
Crouzet Automation - em4 Ethernet opuscolo, versione italiana
2 Protocolli Applicativi
3 Livello Trasporto
Sistemi e reti : Il livello di trasporto
Progettazione e sviluppo di un software applicativo su un single board computer
Concetti base di informatica
PALUZZANO PRELAUREA
Strutturazione delle Reti
Azure IoTHub - Roboval 2018
CommSEC - linea prodotti InterLINK (IT)
EuComm
REALIZZAZIONE DI UN SOFTWARE DI COMUNICAZIONE MULTIPROTOCOLLO PER IL CONTROLL...
Ad

More from Marco Buttolo (20)

PPTX
Web sockets
PPTX
Cognitive services
PPTX
Corso automazione modulo2
PPTX
Corso automazione modulo1
PPTX
Antropologia
PPTX
Introduzione psicologia
PPTX
Bisogni educativispeciali
PPTX
Seminario robotica ia
PPTX
Campi elettrici magnetici_devices
PPTX
Galleggiamento corpo
PPT
Elaborazione suono
PPTX
Trattamento termico
PPTX
Introduzione ai cmms
PPTX
Processo fosfatazione
PPTX
Processo burattatura
PPTX
Bootstrap
PPTX
PPSX
Introduzione mongodb
PPTX
Robotica autonoma
PPTX
Robotica collaborativa
Web sockets
Cognitive services
Corso automazione modulo2
Corso automazione modulo1
Antropologia
Introduzione psicologia
Bisogni educativispeciali
Seminario robotica ia
Campi elettrici magnetici_devices
Galleggiamento corpo
Elaborazione suono
Trattamento termico
Introduzione ai cmms
Processo fosfatazione
Processo burattatura
Bootstrap
Introduzione mongodb
Robotica autonoma
Robotica collaborativa

Socket python

  • 1. GESTIONE SOCKET CON PYTHON A cura dell’Ing 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. L’applicazione mostrata in questa demo è una applicazione client del tipo desktop con una semplice interfaccia grafica che permette all’operatore 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 (l’entry 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 l’upgrade 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 un’altra 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 l’acknowledge 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 l’operazione 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. L’operazione receive è normalmente bloccante
  • 12. Grazie mille per la vostra attenzione!!! Per maggiori chiarimenti contattatemi pure: mbuttolo@libero.it www.marcobuttolo.com

Editor's Notes

  • #13: In modalità Presentazione seleziona le frecce per visitare i collegamenti.