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
In modalit Presentazione seleziona le frecce per visitare i collegamenti.