SlideShare a Scribd company logo
1 of 12
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

What's hot

Linux Capabilities - ita - v2.1.5 - compatta
Linux Capabilities - ita - v2.1.5 - compattaLinux Capabilities - ita - v2.1.5 - compatta
Linux Capabilities - ita - v2.1.5 - compattaAlessandro Selli
 
Seminario introduzione all'uso del terminale e della bash in Linux
Seminario introduzione all'uso del terminale e della bash in LinuxSeminario introduzione all'uso del terminale e della bash in Linux
Seminario introduzione all'uso del terminale e della bash in Linuxalberto fiaschi
 
Accesso remoto al proprio computer in una rete eterogenea
Accesso remoto al proprio computer in una rete eterogeneaAccesso remoto al proprio computer in una rete eterogenea
Accesso remoto al proprio computer in una rete eterogeneaGiacomo Antonino Fazio
 
Installazione di koha_su_debian_v2_0_20_12_2014
Installazione di koha_su_debian_v2_0_20_12_2014Installazione di koha_su_debian_v2_0_20_12_2014
Installazione di koha_su_debian_v2_0_20_12_2014Joaquim Hangalo
 
Chi ha paura della command-line? - WordCamp Roma 2018
Chi ha paura della command-line? - WordCamp Roma 2018Chi ha paura della command-line? - WordCamp Roma 2018
Chi ha paura della command-line? - WordCamp Roma 2018Marco Chiesi
 
Tom EE appunti devoxx2012
Tom EE   appunti devoxx2012 Tom EE   appunti devoxx2012
Tom EE appunti devoxx2012 Nicola Pedot
 
PostgreSQL: Prima configurazione
PostgreSQL: Prima configurazionePostgreSQL: Prima configurazione
PostgreSQL: Prima configurazioneEnrico Pirozzi
 
MontelLUG - Conferenze 2007 - Introduzione a RSync
MontelLUG - Conferenze 2007 - Introduzione a RSyncMontelLUG - Conferenze 2007 - Introduzione a RSync
MontelLUG - Conferenze 2007 - Introduzione a RSyncManuel Dalla Lana
 
Linux Kernel, driver e compilazione
Linux Kernel, driver e compilazioneLinux Kernel, driver e compilazione
Linux Kernel, driver e compilazioneFulvio Corno
 
Libro windows 7 reti sicurezza tecniche avanzate
Libro windows 7 reti sicurezza tecniche avanzateLibro windows 7 reti sicurezza tecniche avanzate
Libro windows 7 reti sicurezza tecniche avanzateLibro Windows 7
 

What's hot (20)

pugBO #10 PSR e Composer
pugBO #10 PSR e ComposerpugBO #10 PSR e Composer
pugBO #10 PSR e Composer
 
Linux Capabilities - ita - v2.1.5 - compatta
Linux Capabilities - ita - v2.1.5 - compattaLinux Capabilities - ita - v2.1.5 - compatta
Linux Capabilities - ita - v2.1.5 - compatta
 
GNU Linux Programming introduction
GNU Linux Programming introductionGNU Linux Programming introduction
GNU Linux Programming introduction
 
Corso Bash
Corso BashCorso Bash
Corso Bash
 
Seminario introduzione all'uso del terminale e della bash in Linux
Seminario introduzione all'uso del terminale e della bash in LinuxSeminario introduzione all'uso del terminale e della bash in Linux
Seminario introduzione all'uso del terminale e della bash in Linux
 
Accesso remoto al proprio computer in una rete eterogenea
Accesso remoto al proprio computer in una rete eterogeneaAccesso remoto al proprio computer in una rete eterogenea
Accesso remoto al proprio computer in una rete eterogenea
 
Installazione di koha_su_debian_v2_0_20_12_2014
Installazione di koha_su_debian_v2_0_20_12_2014Installazione di koha_su_debian_v2_0_20_12_2014
Installazione di koha_su_debian_v2_0_20_12_2014
 
PostgreSQL : Tuning
PostgreSQL : TuningPostgreSQL : Tuning
PostgreSQL : Tuning
 
Chi ha paura della command-line? - WordCamp Roma 2018
Chi ha paura della command-line? - WordCamp Roma 2018Chi ha paura della command-line? - WordCamp Roma 2018
Chi ha paura della command-line? - WordCamp Roma 2018
 
Tom EE appunti devoxx2012
Tom EE   appunti devoxx2012 Tom EE   appunti devoxx2012
Tom EE appunti devoxx2012
 
X2 Linux Riassunti
X2 Linux RiassuntiX2 Linux Riassunti
X2 Linux Riassunti
 
PostgreSQL: Prima configurazione
PostgreSQL: Prima configurazionePostgreSQL: Prima configurazione
PostgreSQL: Prima configurazione
 
GNU Linux introduction
GNU Linux introductionGNU Linux introduction
GNU Linux introduction
 
Linux shell
Linux shellLinux shell
Linux shell
 
Java lezione 15
Java lezione 15Java lezione 15
Java lezione 15
 
Arduino tre tomcat
Arduino tre tomcatArduino tre tomcat
Arduino tre tomcat
 
MontelLUG - Conferenze 2007 - Introduzione a RSync
MontelLUG - Conferenze 2007 - Introduzione a RSyncMontelLUG - Conferenze 2007 - Introduzione a RSync
MontelLUG - Conferenze 2007 - Introduzione a RSync
 
Linux Kernel, driver e compilazione
Linux Kernel, driver e compilazioneLinux Kernel, driver e compilazione
Linux Kernel, driver e compilazione
 
Libro windows 7 reti sicurezza tecniche avanzate
Libro windows 7 reti sicurezza tecniche avanzateLibro windows 7 reti sicurezza tecniche avanzate
Libro windows 7 reti sicurezza tecniche avanzate
 
CMS Joomla
CMS JoomlaCMS Joomla
CMS Joomla
 

Similar to Socket python

13 Linux Network Comandi
13 Linux Network Comandi13 Linux Network Comandi
13 Linux Network ComandiMauro Ferrigno
 
IoT: protocolli, dispositivi, architetture
IoT: protocolli, dispositivi, architettureIoT: protocolli, dispositivi, architetture
IoT: protocolli, dispositivi, architettureStefano Valle
 
Tesi Asterisk: CONFIGURAZIONE DI UN SERVIZIO VOIP CON ASTERISK
Tesi Asterisk: CONFIGURAZIONE DI UN SERVIZIO VOIP CON ASTERISK Tesi Asterisk: CONFIGURAZIONE DI UN SERVIZIO VOIP CON ASTERISK
Tesi Asterisk: CONFIGURAZIONE DI UN SERVIZIO VOIP CON ASTERISK Riccardo Galletti
 
Soluzioni per la difesa da attacchi DoS nelle reti SDN
Soluzioni per la difesa da attacchi DoS nelle reti SDNSoluzioni per la difesa da attacchi DoS nelle reti SDN
Soluzioni per la difesa da attacchi DoS nelle reti SDNMatteo D'Amore
 
Come funziona il voip
Come funziona il voipCome funziona il voip
Come funziona il voipLuca
 
9 Intranetting
9 Intranetting9 Intranetting
9 Intranettingacapone
 
Crouzet Automation - em4 Ethernet opuscolo, versione italiana
Crouzet Automation - em4 Ethernet opuscolo, versione italiana Crouzet Automation - em4 Ethernet opuscolo, versione italiana
Crouzet Automation - em4 Ethernet opuscolo, versione italiana Crouzet
 
2 Protocolli Applicativi
2 Protocolli Applicativi2 Protocolli Applicativi
2 Protocolli Applicativiacapone
 
3 Livello Trasporto
3 Livello Trasporto3 Livello Trasporto
3 Livello Trasportoacapone
 
Sistemi e reti : Il livello di trasporto
Sistemi e reti : Il livello di trasportoSistemi e reti : Il livello di trasporto
Sistemi e reti : Il livello di trasportoStefano Scarpellini
 
Progettazione e sviluppo di un software applicativo su un single board computer
Progettazione e sviluppo di un software applicativo su un single board computerProgettazione e sviluppo di un software applicativo su un single board computer
Progettazione e sviluppo di un software applicativo su un single board computerAlessandro Mascherin
 
Concetti base di informatica
Concetti base di informaticaConcetti base di informatica
Concetti base di informaticaGianni Locatelli
 
Strutturazione delle Reti
Strutturazione delle RetiStrutturazione delle Reti
Strutturazione delle RetiVincenzo Quero
 
Azure IoTHub - Roboval 2018
Azure IoTHub - Roboval 2018Azure IoTHub - Roboval 2018
Azure IoTHub - Roboval 2018Andrea Tosato
 
CommSEC - linea prodotti InterLINK (IT)
CommSEC - linea prodotti InterLINK (IT)CommSEC - linea prodotti InterLINK (IT)
CommSEC - linea prodotti InterLINK (IT)iBLio
 
EuComm
EuCommEuComm
EuCommiBLio
 
REALIZZAZIONE DI UN SOFTWARE DI COMUNICAZIONE MULTIPROTOCOLLO PER IL CONTROLL...
REALIZZAZIONE DI UN SOFTWARE DI COMUNICAZIONE MULTIPROTOCOLLO PER IL CONTROLL...REALIZZAZIONE DI UN SOFTWARE DI COMUNICAZIONE MULTIPROTOCOLLO PER IL CONTROLL...
REALIZZAZIONE DI UN SOFTWARE DI COMUNICAZIONE MULTIPROTOCOLLO PER IL CONTROLL...Enrico Paluzzano
 

Similar to Socket python (20)

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

More from Marco Buttolo

More from Marco Buttolo (20)

Web sockets
Web socketsWeb sockets
Web sockets
 
Cognitive services
Cognitive servicesCognitive services
Cognitive services
 
Corso automazione modulo2
Corso automazione modulo2Corso automazione modulo2
Corso automazione modulo2
 
Corso automazione modulo1
Corso automazione modulo1Corso automazione modulo1
Corso automazione modulo1
 
Antropologia
AntropologiaAntropologia
Antropologia
 
Introduzione psicologia
Introduzione psicologiaIntroduzione psicologia
Introduzione psicologia
 
Bisogni educativispeciali
Bisogni educativispecialiBisogni educativispeciali
Bisogni educativispeciali
 
Seminario robotica ia
Seminario robotica iaSeminario robotica ia
Seminario robotica ia
 
Campi elettrici magnetici_devices
Campi elettrici magnetici_devicesCampi elettrici magnetici_devices
Campi elettrici magnetici_devices
 
Galleggiamento corpo
Galleggiamento corpoGalleggiamento corpo
Galleggiamento corpo
 
Elaborazione suono
Elaborazione suonoElaborazione suono
Elaborazione suono
 
Trattamento termico
Trattamento termicoTrattamento termico
Trattamento termico
 
Introduzione ai cmms
Introduzione ai cmmsIntroduzione ai cmms
Introduzione ai cmms
 
Processo fosfatazione
Processo fosfatazioneProcesso fosfatazione
Processo fosfatazione
 
Processo burattatura
Processo burattaturaProcesso burattatura
Processo burattatura
 
Bootstrap
BootstrapBootstrap
Bootstrap
 
Mvvm
MvvmMvvm
Mvvm
 
Introduzione mongodb
Introduzione mongodbIntroduzione mongodb
Introduzione mongodb
 
Robotica autonoma
Robotica autonomaRobotica autonoma
Robotica autonoma
 
Robotica collaborativa
Robotica collaborativaRobotica collaborativa
Robotica collaborativa
 

Recently uploaded

Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO AndreaGiornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO AndreaServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO SimoneGiornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO SimoneServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA GiorgioGiornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA GiorgioServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI DanieleGiornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI DanieleServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI GiovanniGiornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI GiovanniServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' DavideGiornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' DavideServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO AntonioGiornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO AntonioServizi a rete
 

Recently uploaded (7)

Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO AndreaGiornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO SimoneGiornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA GiorgioGiornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI DanieleGiornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI GiovanniGiornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' DavideGiornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO AntonioGiornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
 

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

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