Applicazioni distribuite. La programmazione di rete. Interfacce e protocolli. Protocollo applicativo

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Applicazioni distribuite. La programmazione di rete. Interfacce e protocolli. Protocollo applicativo"

Transcript

1 Applicazioni distribuite Applicazione: un insieme di programmi coordinati per svolgere una data funzione applicativa. La programmazione di rete Introduzione alla programmazione di rete La connessione La trasmissione Un applicazione è distribuita se prevede più programmi (o processi) eseguiti su differenti calcolatori connessi tramite una rete. I programmi devono quindi contenere funzioni che consentono la comunicazione tramite una rete. 20 febbraio 2004 Processo: programma in esecuzione Rete: nodi collegati + servizi di rete che consentono la comunicazione Protocollo applicativo Interfacce e protocolli Le regole per la comunicazione in una applicazione distribuita sono dette protocollo applicativo. Il protocollo applicativo utilizza i servizi messi a disposizione del Sistema Operativo della macchina e i servizi di rete che consentono la comunicazione, messi a disposizione dal software di rete Es. il protocollo applicativo della navigazione Web è detto HyperText Transfer Protocol - http. Il software di rete (servizi di rete) dipende dal protocollo di comunicazione comune tra i nodi della rete Il protocollo applicativo deve essere definito opportunamente e comune a tutti i programmi dell applicazione. Es. ogni messaggio scambiato è terminato dalla stringa \0 \0 \0. Si considera il protocollo di comunicazione TCP/IP (Transfer Control Protocol/Interconnect Protocol) L insieme delle chiamate di funzioni di sistema utilizzabili dai programmi applicativi viene comunemente definito API (application program interface): le API forniscono il canale (o supporto) di comunicazione; i programmi comunicano invocando opportune funzioni dell API di rete; il protocollo applicativo rappresenta le regole di comunicazione, e considera il contenuto della comunicazione

2 Interfacce e protocolli L interfaccia socket Applicazione distribuita Obbiettivo: specificare l interfaccia tra programma applicativo e software del protocollo di comunicazione Programma applicativo P Protocollo applicativo Programma applicativo Q L API standard per TCP/IP si chiama interfaccia socket ed è stata definita a Berkley agli albori di internet (circa 1980). Sistema operativo eswdi rete Chiamate al s.o. e al software di rete (API) Sistema operativo eswdi rete Per utilizzarlo, e cioè utilizzare le funzioni di rete relative, è necessario includere un insieme di file di libreria (sys/types.h, sys/socket.h, netinet/in.h) Il socket costituisce la struttura dati che rappresenta il canale di rete Rete L interfaccia socket Connessione tra calcolatori Unix e Windows L interfaccia socket è in linguaggio C ed è per calcolatori Unix (LINUX) : per calcolatori Windows si utilizza WinSocket. Programma C Programma C Socket funziona anche per altri protocolli differenti da TCP/IP. API di Unix + socket API di Win + Winsocket TCP/IP garantisce l interoperabilità tra calcolatori anche se equipaggiati con sistemi operativi differenti. Unix e TCP/IP Windows e TCP/IP Calcolatori Unix e calcolatori Windows possono comunicare utilizzando, rispettivamente, le interfacce Socket e WinSocket. Canale di comunicazione

3 Il modello Client/Server Identificazione dei processi - Indirizzamento Il software di rete TCP/IP consente a due processi residenti su due nodi della rete di comunicare tra loro, trasferendo dati. Non definisce a priori nessuno schema o modello di cooperazione (applicativa) tra i processi (comunicazione peer-to-peer) Il modello di cooperazione tipico di un applicazione distribuita è il modello client/server processo server: offre servizi ad altri processi, accetta le richieste, esegue il servizio, fornisce un risultato. Il server viene pertanto attivato prima del client processo client: richiede dei servizi ad un server e attende risposta Siano P e Q i due processi che devono comunicare: Q (client) deve richiedere un servizio a P (server) E necessario che Q sappia come raggiungere P (per inviargli la richiesta) e che poi P sappia come raggiungere Q (per restituire quanto richiesto o segnalare il completamento dell operazione richiesta dallo stesso Q) Un processo viene identificato, e quindi indirizzato, ai fini della comunicazione specificando il calcolatore sul quale il processo è in esecuzione Generalmente un processo conserva lo stesso ruolo (è o sempre Client o sempre Server) il numero di port, che identifica il processo sul suo calcolatore ai fini della comunicazione Indirizzamento Il modello di comunicazione e la connessione Il calcolatore è specificato tramite l indirizzo IP (Internet Protocol): l indirizzo IP è composto da 4 byte (quindi 32 bit) (ad esempio ) La comunicazione TCP è connection-oriented (orientata alla connessione) perchè due processi comunichino è necessario prima stabilire una connessione, quindi scambiare i dati Il port èun valore intero che può essere specificato dal processo o assegnato automaticamente alcuni port (compresi tra 0 e 1023) sono assegnati a servizi standard e non possono essere utilizzati per sviluppare propri server L indirizzamento TCP completo è quindi specificato fornendo l indirizzo IP della macchina ed il port Es. < , 80> significa: port 80 (di solito è il port del Web server) della macchina Perchè una connessione possa essere stabilita è necessario che un processo (generalmente il server P) sia in attesa di una richiesta di connessione da parte di un altro processo (il client Q)

4 Il modello di comunicazione e la connessione Sequenza per la connessione di due processi P e Q: P e Q rappresentano i punti terminali della connessione considerata ogni punto terminale è identificato dalla coppia <indirizzo IP, numero di port> ogni connessione è quindi identificata da 4 numeri: <indirizzo IP di P, numero di port di P>, <indirizzo IP di Q, numero di port di Q> dopo la connessione, il canale di comunicazione è bidirezionale, affidabile e orientato allo stream Il modello di comunicazione e la connessione Le principali caratteristiche del canale di comunicazione sono: bidirezionale: P colloquia con Q e Q colloquia con P orientato allo stream: consente una trasmissione continua di byte (o di gruppi di byte) affidabile: se il destinatario (Q o P) non riceve un byte (o un gruppo di byte), il mittente (P o Q) se ne accorge. E la caratteristica del TCP, non presente nell IP Si noti che uno stesso processo può partecipare a diverse conessioni contemporaneamente. Le diverse connessioni sono infatti distinte dagli altri punti terminali Tipi di calcolatori e formato dei dati I calcolatori che si affacciano sulla rete (host) possono essere di tipi e con sistemi operativi differenti. I dati possono essere rappresentati in modi differenti Il TCP/IP prevede un formato di rete dei dati unico: ogni calcolatore dispone di routine per convertire i dati dal formato TCP/IP al proprio formato locale e viceversa. Indirizzi IP: u_long inet_addr(char * stringa) char * inet_ntoa(u_long addr) Port: u_short htons(u_short port) u_short ntohs(u_short port)

5 Il meccanismo accept-connect connect La creazione di una connessione tra due processi deve seguire le seguenti regole La programmazione di rete il processo P (server) si pone in attesa di richieste di connessione (apertura passiva) Si utilizza la funzione accept (bloccante) La connessione il processo Q (client) formula una richiesta a P di apertura di connessione (apertura attiva) Si utilizza la funzione connect Le richieste si attuano sull interfaccia di socket tramite le funzioni accept/connect Per stabilire una connessione è necessario, dal punto di vista programmativo, inizializzare opportune variabili che descrivono i punti terminali della connessione. Lo vedremo con degli esempi Il meccanismo accept-connect connect Un semplice client La connessione può fallire perché: il processo P (server) non esiste P esiste ma non ha eseguito la accept P esiste ma è occupato in un altra connessione e la coda dei processi che richiedono connessioni a P è già piena Q (client) non conosce gli esatti valori dell indirizzo IP del calcolatore di P e del port di P.. Le operazioni svolte dal processo Q (client) che esegue una richiesta di connessione ad un altro processo (apertura attiva) sono: definisce una opportuna variabile di tipo struct sockaddr_in per contenere le informazioni sul punto terminale che identifica il server a cui vuole connettersi (il tipo struct sockaddr_in è definito per contenere informazioni di un punto terminale) inizializza la variabile relativa con dati validi può definire una seconda variabile di tipo struct sockaddr_in per contenere le informazioni del punto terminale che rappresenta se stesso crea un socket della connessione (descrittore) esegue la connect specificando il proprio socket

6 Descrizione del punto terminale - struct sockaddr_in struct sockaddr_in short sin_family; u_short sin_port; struct in_addr sin_addr; char sin_zero[8]; Dove sin_family: famiglia di indirizzi AF_INET (Address Family InterNet) altre famiglie: AF_UP (Xerox), AF_APPLETALK (AppleTalk), AF_UNIX (UNIX) sin_port: numero di port, a 16 bit ( ) sin_addr: indirizzo IP, 32 bit sin_zero: non utilizzato Inizializzazione del punto terminale #include <sys/type.h> #include <sys/socket.h> #include <netinet/in.h> /* costanti utili */ #define IND_SERVER /*NB è una stringa*/ #define PORTA_SERVER struct sockaddr_in server_addr; /*punto terminale */ int server_len = sizeof (server_addr); bzero ((char *)&server_addr, server_len); /* azzera il punto terminale */ server_addr.sin_family = AF_INET; server_addr.sin_port = htons((u_short) PORTA_SERVER); /* htons: host to network conversion, short */ server_addr.sin_addr.s_addr = inet_addr(ind_server); /* inet_addr: converte da stringa a formato rete */ Funzione addr_initialize Un semplice client #include <sys/type.h> #include <sys/socket.h> #include <netinet/in.h> void addr_initialize(struct sockaddr_in *indirizzo, int port, long IPaddr) indirizzo->sin_family = AF_INET; indirizzo->sin_port = htons((u_short) port); /* htons: host to network conversion, short */ indirizzo->sin_addr.s_addr = IPaddr; inizializza il punto terminale server crea un socket tramite l istruzione sd = socket(af_inet, SOCK_STREAM, 0); esegue la richiesta di connessione error = connect(sd, (struct sockaddr*) &server_addr, sizeof(server_addr)); Tramite la funzione connect gli viene assegnato un port di cui può conoscere il valore tramite la funzione getsockname al termine, chiude il socket rilasciando il port che può essere utilizzato da altri programmi: close (sd);

7 socket( ) connect () int socket (int family, int type, int protocol) / Crea un socket e ne restituisce il descrittore, -1 = errore. Parametri: family, definisce la famiglia di protocolli (AF_INET per TCP/IP, AF_UP per Xerox,...); type, specifica il tipo di comunicazione (SOCK_STREAM per servizio di consegna affidabile TCP, SOCK_DGRAM per datagramma senza connessione UDP,...); protocol, specifica quale protocollo utilizzare se nella famiglia utilizzata ne esiste più di uno, normalmente vale 0. Nota bene: il socket da solo non è ancora il canale di rete, è soltanto una struttura dati che serve per gestire il canale di rete; per aprire un canale di rete associandolo al socket occorre chiamare la primitiva connect oppure la primitiva accept / int connect (int sd, struct sockaddr server_ep, int ep_len) / Invia una richiesta di collegamento in qualità di cliente, restituisce 0 se successo, -1 se errore. Parametri: sd, specifica il socket (che deve essere già stato creato) da associare al canale di rete; server_ep, specifica il punto terminale (endpoint) del destinatario della richiesta di collegamento, che è il server; ep_len, specifica la lunghezza in byte del punto terminale / Chiamata tipica: error = connect(sd, (sockaddr *)&server_ep, sizeof(server_ep)); Passaggio di parametri a main Listato di UClient1 (i) argc: contiene il numero dei parametri ricevuti argv: è un vettore di puntatori a stringhe, ognuna delle quali è un parametro. Per convenzione argv[0] contiene sempre il nome del programma in esecuzione #include <stdio.h> void main(int argc, char *argv[]) int i; printf( il valore di argc e %d \n \n, argc); for (i=0; i<argc; i++) printf( parametro %i = %s\n, i, argv[i]); >prova il valore di argc e 2 parametro 0 = prova1 parametro 1 = /* programma UCLIENT1 */ #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #define PORT 4000 void addr_initialize(); void main(int argc, char* argv[]) /*legge sulla linea di comando l indirizzo di IP del calcolatore dove c è il server*/ int sd; struct sockaddr_in server_addr; struct sockaddr_in mio_addr; int mio_addr_len=sizeof(mio_addr); int error;

8 Listato di UClient1 (ii( ii) Esecuzione di UClient1 addr_initialize(&server_addr, PORT, inet_addr(argv[1])); sd=socket(af_inet,sock_stream,0); error=connect(sd,(struct sockaddr*) &server_addr, sizeof(server_addr)); if (error==0) printf("ho eseguito la connessione\n"); getsockname(sd, &mio_addr, &mio_addr_len); printf("il mio port e': %d\n\n",ntohs(mio_addr.sin_port)); close(sd); else printf("%s","\nerrore di connect\n\n"); close(sd); Se il server non è attivo, il client riporta il fallimento della connessione: Un semplice server (i) Un semplice server (ii( ii) Le operazioni svolte dal processo P che si mette in attesa di richieste di connessione da altri processi (apertura passiva) sono analoghe a quelle svolte da Q: predispone una variabile struct sockaddr_in client_addr per memorizzare l indirizzo IP ed il port del client per potergli rispondere predispone una variabile struct sockaddr_in server_addr per inizializzare il proprio punto terminale, specificando indirizzo e numero di port. Generalmente un server specifica che intende accettare connessioni sul proprio port, indipendentemente dall indirizzo IP (del server stesso) sul quale arrivano le richieste (INADDR_ANY) crea un socket sd per accettare connessioni indica a TCP/IP che l indirizzo locale associato al socket sd è quello contenuto in server_addr tramite la funzione bind: bind(sd,(struct sockaddr*)&server_addr, sizeof(server_addr)); si pone in attesa di una richiesta di connessione tramite la funzione accept: new_sd = accept(sd, (struct sockaddr*) &client_addr, &client_len); Poichè la funzione accept è bloccante (con time-out), il programma eseguito dal server può proseguire solo quando arriva una richiesta di connessione Quando la accept è stata eseguita la connessione è associata al nuovo socket new_sd e quindi le operazioni di trasmissione e/o ricezione dati fanno riferimento a questo socket. Il socket sd può essere usato per accettare altre richieste di connessione

9 Un semplice server (iii( iii) bind( ) il server chiude la connessione con il client tramite la close(new_sd); int bind (int sd, struct sockaddr server_ep, int ep_len) In aggiunta il server: può stabilire il numero massimo di richieste di connessione che può accodare (MAXCONN), servendone però sempre una sola per volta: listen(sd, MAXCONN); La funzione listen serve anche per sincronizzare le richieste tra client e server ed elimina il problema di connect fallita nel caso in cui il server non abbia ancora eseguito l accept quando il client esegue la connect / Associa un numero di porta TCP a un socket, restituisce 0 se successo, -1 se errore. Parametri: sd, specifica il socket da associare al numero di porta TCP; server_ep, specifica il punto terminale (endpoint) contenente il numero di porta da associare (l'indirizzo ha funzione di filtro); ep_len, specifica la lunghezza in byte del punto terminale / accept( ) Listato di UServer1 (i) int accept (int sd, struct sockaddr client_ep, int ep_len) / Accetta una richiesta di collegamento in qualità di servente, restituisce un nuovo socket (sempre >= 0) se successo, -1 se errore; il nuovo socket restituito è quello su cui portare avanti il dialogo con il cliente richiedente; il vecchio socket è disponibile per ulteriori accettazioni. Parametri: sd, specifica il socket (che deve essere già stato creato) su cui ricevere la richiesta di collegamento proveniente dal cliente; client_ep, specifica la locazione in cui memorizzare il punto terminale (endpoint) del cliente; ep_len, specifica la locazione in cui memorizzare la lunghezza in byte del punto terminale / Chiamata tipica: new_sd = accept (sd, (sockaddr *)&client_ep, &ep_len); /* programma USERVER1 */ #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #define PORT 4000 #define MAXCONN 5 void addr_initialize(); void main(int argc, char * argv[]) int sd,new_sd; struct sockaddr_in server_addr; struct sockaddr_in client_addr; int client_len=sizeof(client_addr);

10 Listato di UServer1 (ii( ii) UClient1 e UServer1 in esecuzione addr_initialize(&server_addr, PORT, INADDR_ANY); sd=socket(af_inet,sock_stream,0); bind(sd,(struct sockaddr*) &server_addr,sizeof(server_addr)); listen(sd,maxconn); printf("mi pongo in attesa di richieste di connessione\n"); printf("sul mio port: %d\n", ntohs(server_addr.sin_port)); new_sd=accept(sd,(struct sockaddr*) &client_addr, &client_len); printf("\n\nho accettato una connessione\n"); printf("dal client con port: %d\n\n", ntohs(client_addr.sin_port)); close(new_sd); close(sd); Connessione lato client e lato server lato client lato server Indirizzo IP Indirizzo/i IP numero port del server socket della connessione (lato client) connect(, con chi ) socket per accettare connessioni (bind.., listen.) new_sd=accept(, da chi ) numero port del client socket della connessione accettata (lato server)

11 La trasmissione La programmazione di rete Dopo aver stabilito la connessione bidirezionale (accept/connect), i due processi possono scambiarsi dati (caratteri) attraverso tramite le funzioni send e receive La trasmissione send: spedisce dati all altro punto terminale della connessione; receive: riceve dati inviati dall altro punto terminale della connessione Trasmissione Sintassi primitive send all invocazione della funzione, i byte da trasferire, presenti nelle variabili del processo, vengono copiati in un area di sistema (buffer di sistema) e il processo può proseguire nell elaborazione anche se i dati non sono ancora arrivati a destinazione. E sospensiva per il processo che la invoca solo se il buffer di sistema è pieno receive sospensiva: all invocazione della funzione, il processo che la esegue non può proseguire nell elaborazione finchè i dati non sono stati ricevuti e copiati nel buffer di sistema del ricevente (a meno di chiusura di connessione o errore). I byte ricevuti nel buffer di sistema vengono quindi copiati nelle variabili del processo. Se sono stati ricevuti più dati di quelli copiabili nelle variabili del processo, questi rimangono disponibili nel buffer di sistema per chiamate successive int send (int sd, char message, int len, int flags) / Spedisce, attraverso il canale identificato da sd, len byte memorizzati nella stringa message. Restituisce il numero di byte effettivamente inviati, -1 se errore. Altri param.: flags, specifica funzioni speciali, di solito 0 / int recv (int sd, char message, int len, int flags) / Riceve, attraverso il canale identificato da sd, len byte e li memorizza nella stringa message. Restituisce il numero di byte effettivamente ricevuti, -1 se errore. Altri param.: flags, specifica funzioni speciali, di solito 0 /

12 Send... Esempio d uso char dati[12]="abcdefghilm"; int num; /* numero byte da inviare */ int inviati; /* numero byte trasmessi */ num = 7; inviati=send(sd,dati,num,0); Receive... # define DIM... char dati_ricevuti[dim + 1]; int ricevuti; /* numero byte ricevuti */ ricevuti=recv(sd,dati_ricevuti,dim,0); Esempio d uso 2 - Client con ricezione carattere, eco e ritrasmissione di carattere (i) #include <stdio.h> #include <sys/socket.h> void main(int argc, char* argv[]) int sd; struct sockaddr_in server; int error; char c; /* inizializzazione pto terminale del server */ server.sin_family = AF_INET; server.sin_port = htons((u_short) 4500); server.sin_addr.s_addr = inet_addr( ); sd=socket(af_inet,sock_stream,0); error=connect(sd,(struct sockaddr*) &server_addr, sizeof(server_addr)); Esempio d uso 2 - Client con ricezione carattere, eco e ritrasmissione di carattere (ii) Ancora sul funzionamento: send if (error==0) recv(sd, &c, 1, 0); printf( %c\n, c); send(sd, &c, 1, 0); printf("\n Chiudo la connessione \n"); close(sd); else printf("%s","\nerrore di connect\n\n"); close(sd); int send (int sd, char message, int len, int flags) copia in memoria di sistema del trasmittente len byte prelevati da message (variabile utente) non bloccante se memoria di sistema sufficiente a contenere i byte da spedire valore restituto: n byte effettivamente spediti (<0 se errore) /* end main */

13 Ancora sul funzionamento - receive Un esempio - UClient2 e Userver2 int recv (int sd, char message, int len, int flags) bloccante fino ad arrivo dati (o segnalazione evento chiusura connessione o errore) riceve i dati nel buffer di sistema del ricevente e copia len byte in message (variabile utente) valore restituito: - se n byte effettivamente ricevuti < = len, allora valore restituito = n byte effettivamente ricevuti UClient2 e Userver2: Invio da parte di un client di un n variabile di caratteri che vengono ricevuti da un server che li visualizza. Il numero di caratteri da inviare è specificato dall utente del client (se viene specificato 0, l applicazione deve terminare) - se n byte ricevuti > len, allora solo len copiati in message (i rimanenti disponibili per receive successive) e valore restituito = n byte copiati - se chiusura connessione valore restituito =0, se errore valore restituito < UClient2 Listato di UClient2 (i) UClient2: stabilisce la connessione con UServer2; chiede all utente di inserire il numero di caratteri che si vogliono inviare (num); preleva da un buffer (char dati[12]) tali caratteri e li invia al server; ripete la richiesta di num. Termina, se l utente ha indicato che non si vogliono spedire ulteriori caratteri (num = 0), chiudendo la connessione. #include <stdio.h> #include <sys/socket.h> #define PORT 4000 void addr_initialize(); void main(int argc, char* argv[]) int sd; struct sockaddr_in server_addr; struct sockaddr_in mio_addr; int mio_addr_len=sizeof(mio_addr); int error, num, inviati; char dati[12]="abcdefghilm"; addr_initialize(&server_addr, PORT, inet_addr(argv[1])); sd=socket(af_inet,sock_stream,0); error=connect(sd,(struct sockaddr*) &server_addr, sizeof(server_addr));

14 Listato di UClient2 (ii( ii) UServer2 if (error==0) printf("ho eseguito la connessione\n"); printf("\n inserire il numero di caratteri da trasmettere: "); scanf("%d", &num); while (num > 0) inviati=send(sd,dati,num,0); printf("inserire il numero di caratteri da trasmettere:"); scanf("%d", &num); printf("\n Chiudo la connessione \n"); close(sd); else printf("%s","\nerrore di connect\n\n"); close(sd); /* end main */ UServer2: accetta la connessione (da UClient2); riceve un numero variabile di caratteri (ric), con un limite massimo di DIMBUF; stampa a video il numero di caratteri ricevuti ed i caratteri stessi. Poi, si prepara per una nuova ricezione di caratteri dalla stessa connessione; se non ha ricevuto caratteri (ric = 0) chiude la connessione con UClient2 e si prepara per una nuova connessione da un nuovo client Listato di UServer2 (i) Listato di UServer2 (ii( ii) #include <stdio.h> #include <sys/socket.h> #define PORT 4000 #define MAXCONN 5 #define DIMBUF 6 void addr_initialize(); void main(int argc, char * argv[]) int sd,new_sd; struct sockaddr_in server_addr; struct sockaddr_in client_addr; int client_len=sizeof(client_addr); int ric, i; char buf[dimbuf]; addr_initialize(&server_addr, PORT, INADDR_ANY); sd=socket(af_inet,sock_stream,0); bind(sd,(struct sockaddr*) &server_addr,sizeof(server_addr)); listen(sd,maxconn); while (1) printf("\nmi pongo in attesa di richieste di connessione\n"); new_sd=accept(sd,(struct sockaddr*) &client_addr, &client_len); printf("ho accettato una connessione\n"); ric=1; while (ric>0) ric=recv(new_sd,buf,dimbuf,0); printf("\nho ricevuto %d caratteri: ",ric); for (i=0; i<ric;i++) printf("%c", buf[i]); close(new_sd); printf("chiudo la connessione\n"); /* fine del ciclo perenne */ /* end main*/

15 Ricezione di sequenze di caratteri da memorizzare in array La ricezione di sequenze di caratteri da memorizzare in stringhe (array di caratteri terminate da \0) deve garantire la correttezza dell operazione e cioè nell array devono venire copiati tutti e soli i caratteri della sequenza. Si deve inoltre ricordare che i buffer di sistema di mittente e destinatario di una trasmissione sono indipendenti tra loro. Ad es., in un determinato istante il buffer di sistema del destinatario può contenere byte che provengono da due send successive La ricezione può avvenire carattere per carattere, fino a completare la sequenza (più semplice) a gruppi di caratteri, fino a completare la sequenza (più veloce) Inoltre, la sequenza da ricevere può essere di lunghezza fissata di lunghezza variabile terminata da un carattere terminatore di fine_seq Sequenza di caratteri di lunghezza fissata da memorizzare in una stringa Ricezione di un singolo carattere alla volta char seq [DIM+1]; int i; Sequenza di caratteri di lunghezza fissata da memorizzare in una stringa Ricezione di più caratteri alla volta char seq [DIM+1]; int i; i=0; while (i < DIM) recv(sd, &seq[i], 1, 0); i++; seq[i]= \0 ; 0 1 DIM \0 i=0; while (i < DIM) ric = recv(sd, &seq[i], DIM - i, 0); i = i + ric; seq[i]= \0 ;

16 Sequenza di caratteri terminata da carattere terminatore da memorizzare in una stringa Ricezione di un singolo carattere alla volta char seq [MAXDIM]; char term = ; int i; Sequenza di caratteri terminata da carattere terminatore da memorizzare in una stringa Ricezione di più caratteri alla volta char seq [MAXDIM]; char term = ; int i; i=0; do recv(sd, &seq[i], 1, 0); i++; while (seq[i-1]!=term); 0 1 MaxDIM -1 \0 i=0; do ric = recv(sd, &seq[i], MAXDIM-i, 0); i=i+ric; while ((seq[i-1]!=term)&& (i<maxdim)); seq[i-1]= \0 ; seq[i-1]= \0 ;

La programmazione di rete

La programmazione di rete La programmazione di rete Introduzione alla programmazione di rete La connessione La trasmissione 20 febbraio 2004 Applicazioni distribuite Applicazione: un insieme di programmi coordinati per svolgere

Dettagli

La programmazione di rete

La programmazione di rete La programmazione di rete Acura di: Luca Breveglieri, Giacomo Buonanno, Roberto Negrini, Giuseppe Pozzi, Donatella Sciuto, Mario Verdicchio Tipologia di reti La comunicazione tra due calcolatori avviene

Dettagli

Il protocollo applicativo. Esempio di protocollo applicativo

Il protocollo applicativo. Esempio di protocollo applicativo Il protocollo applicativo TCP/IP fornisce gli strumenti per realizzare un protocollo applicativo (gestisce un byte stream). TCP/IP non definisce il protocollo applicativo. Una volta definito, il protocollo

Dettagli

Le reti basate su TCP/IP

Le reti basate su TCP/IP internet Le reti basate su TCP/IP Una rete di reti è detta internet (con la i minuscola). Una internet è definita fornendo i protocolli per trasferire le informazioni tra le varie reti. Il TCP/IP serve

Dettagli

La Programmazione di Rete e di Sistema (ii) La programmazione di rete. Tipologia di reti. La tecnologia di rete. Architettura delle reti

La Programmazione di Rete e di Sistema (ii) La programmazione di rete. Tipologia di reti. La tecnologia di rete. Architettura delle reti La Programmazione di Rete e di Sistema (ii) Giuseppe Pozzi Impianti di Elaborazione (allievi Gestionali Como) Facoltà di Ingegneria dell Informazione Politecnico di Milano La programmazione di rete Architettura

Dettagli

Reti (già Reti di Calcolatori )

Reti (già Reti di Calcolatori ) Reti (già Reti di Calcolatori ) Cenni di Socket Programming Renato Lo Cigno http://disi.unitn.it/locigno/index.php/teaching-duties/computer-networks Socket API Programmazione dei socket Obiettivo:imparare

Dettagli

La Programmazione di Rete e di Sistema (ii) La programmazione di rete. La tecnologia di rete. Tipologia di reti. Architettura delle reti

La Programmazione di Rete e di Sistema (ii) La programmazione di rete. La tecnologia di rete. Tipologia di reti. Architettura delle reti La Programmazione di Rete e di Sistema (ii) A cura di: Luca Breveglieri * Giacomo Buonanno # Roberto Negrini * Giuseppe Pozzi * Donatella Sciuto * * DEI, PoliMI, Milano # LIUC, Castellanza (VA) La programmazione

Dettagli

TECN.PROG.SIST.INF. I Socket Roberta Gerboni

TECN.PROG.SIST.INF. I Socket Roberta Gerboni 2015 - Roberta Gerboni Socket e porte I sistemi operativi multitasking possono fare girare contemporaneamente più processi dove ogni processo può rendere disponibili anche più servizi. Questi devono essere

Dettagli

I.I.S. G.B. PENTASUGLIA MATERA ISTITUTO TECNICO SETTORE TECNOLOGICO LICEO SCIENTIFICO SCIENZE APPLICATE. Classe: 5Ci

I.I.S. G.B. PENTASUGLIA MATERA ISTITUTO TECNICO SETTORE TECNOLOGICO LICEO SCIENTIFICO SCIENZE APPLICATE. Classe: 5Ci I.I.S. G.B. PENTASUGLIA MATERA ISTITUTO TECNICO SETTORE TECNOLOGICO LICEO SCIENTIFICO SCIENZE APPLICATE Disciplina: Tecnologie e Progettazione di Sistemi Informatici e di Telecomunicazione Cognome e Nome:

Dettagli

Socket. Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server.

Socket. Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Socket Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Tale architettura consente ai sistemi di condividere risorse e cooperare per il raggiungimento

Dettagli

Esercitazione [7] Client/Server con Socket

Esercitazione [7] Client/Server con Socket Esercitazione [7] Client/Server con Socket Leonardo Aniello - aniello@dis.uniroma1.it Daniele Cono D'Elia - delia@dis.uniroma1.it Federico Lombardi - lombardi@dis.uniroma1.it Sistemi di Calcolo - Secondo

Dettagli

La Programmazione di Rete e di Sistema (iii) La programmazione di sistema. Il sistema operativo. La programmazione di sistema

La Programmazione di Rete e di Sistema (iii) La programmazione di sistema. Il sistema operativo. La programmazione di sistema La Programmazione di Rete e di Sistema (iii) Giuseppe Pozzi Impianti di Elaborazione (allievi Gestionali Como) Facoltà di Ingegneria dell Informazione Politecnico di Milano giuseppe.pozzi@polimi.it - versione

Dettagli

I Socket. Laboratorio Software 2008-2009 M. Grotto R. Farina

I Socket. Laboratorio Software 2008-2009 M. Grotto R. Farina M. Grotto R. Farina Sommario 1. Applicazioni Distribuite 2. I Socket Introduzione Interfacce e protocolli Descrizione Stile di comunicazione Namespace e protocollo Include e system call Creazione e chiusura

Dettagli

LABORATORIO di Reti di Calcolatori

LABORATORIO di Reti di Calcolatori LABORATORIO di Reti di Calcolatori Socket in linguaggio C: nozioni preliminari 1 of 16 v slide della docente Bibliografia v testo di supporto: D. Maggiorini, Introduzione alla programmazione client-server,

Dettagli

Interazione (TCP) Client-Server con le socket

Interazione (TCP) Client-Server con le socket Interazione (TCP) Client-Server con le socket Interazione TCP Client/Server Server 1. Creare una socket 2. Assegnare un local address alla socket 3. Settare la socket all ascolto 4. Iterativamente: a.

Dettagli

Programmazione di Rete

Programmazione di Rete Programmazione di Rete Ing. Carlo Nobile Socket slide n 1 Sommario Berkeley's socket Socket UDP: funzioni fondamentali Esempio applicazione: Listener Sender Socket non bloccanti Indirizzo IP e Porta Sicurezza

Dettagli

Socket. Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server.

Socket. Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Socket Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Tale architettura consente ai sistemi di condividere risorse e cooperare per il raggiungimento

Dettagli

Lo strato di applicazione in Internet

Lo strato di applicazione in Internet Lo strato di applicazione in Internet Prof. Ing. Carla Raffaelli a.a. 2004/2005 Protocolli applicativi Sono i protocolli utilizzati dalle applicazioni per scambiarsi informazioni Esempi: HTTP per il web,

Dettagli

COMUNICAZIONE TRA PROCESSI REMOTI IN UNIX

COMUNICAZIONE TRA PROCESSI REMOTI IN UNIX A cura del prof. Gino Tombolini 1 COMUNICAZIONE TRA PROCESSI REMOTI IN UNIX Il sistema UNIX TCP/IP fornisce un meccanismo di comunicazione tra processi residenti su nodi distinti di una rete, compatibili

Dettagli

Scrittura dei programmi applicativi di rete

Scrittura dei programmi applicativi di rete Scrittura dei programmi applicativi di rete Contenuti del corso La progettazione delle reti Il routing nelle reti IP Il collegamento agli Internet Service Provider e problematiche di sicurezza Analisi

Dettagli

TECN.PROG.SIST.INF. UDP socket in Windows. Roberta Gerboni

TECN.PROG.SIST.INF. UDP socket in Windows. Roberta Gerboni Roberta Gerboni Schema logico della comunicazione UDP in linguaggio C mediante Datagram socket. bind () Con i datagram socket (SOCK_DGRAM) viene realizzata una comunicazine che permette di scambiare dati

Dettagli

Interazione (TCP) Client-Server con le socket

Interazione (TCP) Client-Server con le socket Interazione (TCP) Client-Server con le socket D. Gendarmi Interazione TCP Client/Server Server 2. Assegnare un local address alla socket 3. Settare la socket all ascolto 4. Iterativamente: a. Accettare

Dettagli

L interfaccia socket

L interfaccia socket L interfaccia socket Application Programming Interface: API Socket API Procedure base Altre procedure Ordinamento dei byte Interazione client-server orientata alla connessione Interazione client-server

Dettagli

Esempio 1: stampa locale di file remoto

Esempio 1: stampa locale di file remoto Alcuni esempi di uso di Socket Esempio 1: stampa locale di file remoto Visualizzazione locale del contenuto di un file remoto. Il client deve richiedere la creazione della connessione e successivamente

Dettagli

RETI DI CALCOLATORI. Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI. Facoltà di Ingegneria Università degli Studi di Udine

RETI DI CALCOLATORI. Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI. Facoltà di Ingegneria Università degli Studi di Udine RETI DI CALCOLATORI Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 1 Nota di Copyright Questo

Dettagli

Esercitazione [08] Server multi-process/multi-thread

Esercitazione [08] Server multi-process/multi-thread Esercitazione [08] Server multi-process/multi-thread Leonardo Aniello aniello@dis.uniroma1.it Daniele Cono D'Elia delia@dis.uniroma1.it Giuseppe Laurenza laurenza@dis.uniroma1.it Federico Lombardi lombardi@dis.uniroma1.it

Dettagli

Cenni di programmazione distribuita in C++ Mauro Piccolo piccolo@di.unito.it

Cenni di programmazione distribuita in C++ Mauro Piccolo piccolo@di.unito.it Cenni di programmazione distribuita in C++ Mauro Piccolo piccolo@di.unito.it Socket Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Tale

Dettagli

IPC Inter Process Communication

IPC Inter Process Communication Il protocollo TCP controlla che la trasmissione tra due end points avvenga correttamente. Non stabilisce alcun criterio su chi deve iniziare la comunicazione. Questo compito è svolto dalle applicazioni

Dettagli

Esercitazione [6] Client/Server con Socket

Esercitazione [6] Client/Server con Socket Esercitazione [6] Client/Server con Socket Leonardo Aniello - aniello@dis.uniroma1.it Daniele Cono D'Elia - delia@dis.uniroma1.it Sistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi di

Dettagli

Comunicazioni fra processi remoti: i socket nello UNIX di Berkeley

Comunicazioni fra processi remoti: i socket nello UNIX di Berkeley Comunicazioni fra processi remoti: i socket nello UNIX di Berkeley La base per l I/O di rete in UNIX BSD (unix di Berkeley) è un astrazione chiamata socket (letteralmente "presa"). Si può considerare il

Dettagli

Internetworking with TCP/IP (Douglas E. Comer) Vol. I and Vol III.

Internetworking with TCP/IP (Douglas E. Comer) Vol. I and Vol III. Internetworking with TCP/IP (Douglas E. Comer) Vol. I and Vol III http://gapil.truelite.it/ http://www.linuxdidattica.org/docs/a ltre_scuole/planck/socket/ Client Server Esistono vari modelli di architettura

Dettagli

ESERCITAZIONE 2 RIPASSO. EX. 1 Un processo padre (parent) crea due processi figli (children) e attende la loro terminazione. Se, e solo se,...

ESERCITAZIONE 2 RIPASSO. EX. 1 Un processo padre (parent) crea due processi figli (children) e attende la loro terminazione. Se, e solo se,... ESERCITAZIONE DEL 23 MARZO 2002 ESERCITAZIONE 2 RIPASSO EX. 1 Un processo padre (parent) crea due processi figli (children) e attende la loro terminazione. Se, e solo se,. EX. 2 Un server di rete attende

Dettagli

L uso di Socket UDP. Usiamo le API Winsock incluse in <Winsock.h> A.A. 2005/06. Dott.ssa Valeria Carofiglio

L uso di Socket UDP. Usiamo le API Winsock incluse in <Winsock.h> A.A. 2005/06. Dott.ssa Valeria Carofiglio L uso di Socket UDP Usiamo le API Winsock incluse in A.A. 2005/06 TCP TCP vs. UDP UDP Interazione UDP Client/Server Server 1. (Inizializzare una WSA) 2. Creare una socket 3. Assegnare un local

Dettagli

API Socket di Berkeley

API Socket di Berkeley Laboratorio Reti di Calcolatori (A.A. 2008-2009) Programmazione di rete ed interfaccia API socket di Berkeley Delfina Malandrino delmal@dia.unisa.it http://www.dia.unisa.it/professori/delmal/ API Socket

Dettagli

TECN.PROG.SIST.INF. TCP socket in Windows. 2015 - Roberta Gerboni

TECN.PROG.SIST.INF. TCP socket in Windows. 2015 - Roberta Gerboni 2015 - Roberta Gerboni Schema logico della comunicazione TCP in linguaggio C mediante bytestream socket. Parte asimmetrica Ruolo passivo bind () Parte asimmetrica Ruolo attivo Parte simmetrica Parte simmetrica

Dettagli

Corso di Sistemi Operativi Esercitazioni

Corso di Sistemi Operativi Esercitazioni Università di Roma La Sapienza Dipartimento di Informatica e Sistemistica Corso di Sistemi Operativi Esercitazioni Lezione IX Esempio di progetto Server HTTP 0.9 Server HTTP 0.9 Specifiche Si chiede di

Dettagli

Esercitazione [7] Server multi-process/multi-thread

Esercitazione [7] Server multi-process/multi-thread Esercitazione [7] Server multi-process/multi-thread Leonardo Aniello - aniello@dis.uniroma1.it Daniele Cono D'Elia - delia@dis.uniroma1.it Sistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi

Dettagli

Laboratorio di. Reti Informatiche. Corso di Laurea Triennale in Ingegneria Informatica A.A. 2016/2017. Ing. Niccolò Iardella

Laboratorio di. Reti Informatiche. Corso di Laurea Triennale in Ingegneria Informatica A.A. 2016/2017. Ing. Niccolò Iardella Laboratorio di Reti Informatiche Corso di Laurea Triennale in Ingegneria Informatica A.A. 2016/2017 Ing. Niccolò Iardella niccolo.iardella@unifi.it 1 Esercitazione 5 Programmazione con i socket Parte 2

Dettagli

Scrittura dei programmi applicativi di rete

Scrittura dei programmi applicativi di rete Nota di Copyright RETI DI CALCOLATORI Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Questo insieme di trasparenze (detto nel seguito slide) è protetto

Dettagli

LABORATORIO di Reti di Calcolatori

LABORATORIO di Reti di Calcolatori LABORATORIO di Reti di Calcolatori Socket in linguaggio C: protocollo connection-oriented 1 of 15 v slide della docente Bibliografia v testo di supporto: D. Maggiorini, Introduzione alla programmazione

Dettagli

C UDP in Windows p53 - variante 1

C UDP in Windows p53 - variante 1 // UDPclient.c C UDP in Windows p53 - variante 1 /* Testo del problema Il processo client invia la stringa "INVIAMI UN NUMERO" diverse volte in un intervallo di tempo di 1 secondo ad un processo server

Dettagli

DATAGRAM SOCKET. Angelastro Sergio Diomede Antonio Viterbo Tommaso

DATAGRAM SOCKET. Angelastro Sergio Diomede Antonio Viterbo Tommaso DATAGRAM SOCKET Angelastro Sergio Diomede Antonio Viterbo Tommaso Definizione supporta i datagram privo di connessione messaggi inaffidabili di una lunghezza massima prefissata il protocollo UDP supporta

Dettagli

Esempio 1: stampa locale di file remoto

Esempio 1: stampa locale di file remoto Alcuni esempi di uso di Socket Esempio 1: stampa locale di file remoto Visualizzazione locale del contenuto di un file remoto. Il client deve richiedere la creazione della connessione e successivamente

Dettagli

Creare una applicazione Winsock di base

Creare una applicazione Winsock di base Creare una applicazione Winsock di base Usiamo le API Winsock incluse in Creare un progetto per una Socket Windows (in Dev C++) Selezionare la file New Projects Selezionare Empty Project Salvare

Dettagli

Laboratorio di. Reti Informatiche. Corso di Laurea Triennale in Ingegneria Informatica A.A. 2016/2017. Ing. Niccolò Iardella

Laboratorio di. Reti Informatiche. Corso di Laurea Triennale in Ingegneria Informatica A.A. 2016/2017. Ing. Niccolò Iardella Laboratorio di Reti Informatiche Corso di Laurea Triennale in Ingegneria Informatica A.A. 2016/2017 Ing. Niccolò Iardella niccolo.iardella@unifi.it 1 Esercitazione 4 Programmazione con i socket Parte 1

Dettagli

Creare un'elementare backdoor in C in ambiente UNIX

Creare un'elementare backdoor in C in ambiente UNIX Creare un'elementare backdoor in C in ambiente UNIX DISCLAIMER: Questo tutorial è a solo scopo didattico. L'autore NON si prende alcuna responsabilità circa usi errati o non legali delle informazioni qui

Dettagli

L interfaccia Socket

L interfaccia Socket L interfaccia Socket Che cos è E una API per la suite TCP/IP una API (Application Program Interface) è il set di funzioni che i programmatori usano per sviluppare applicazioni in un determinato ambiente.

Dettagli

L uso di Socket UDP. TCP vs. UDP UDP

L uso di Socket UDP. TCP vs. UDP UDP L uso di Socket UDP TCP TCP vs. UDP UDP 1 Interazione UDP Client/Server Server 1. Creare un socket 2. Assegnare un local address al socket 3. Iterativamente: a. Inviare e ricevere dati 4. Chiudere il socket

Dettagli

Paradigma client-server

Paradigma client-server Interazione Client Server (socket) Vittorio Maniezzo Università di Bologna Vittorio Maniezzo Università di Bologna 15 CliSer - 1/31 Paradigma client-server Le applicazioni utente devono interagire con

Dettagli

Programmazione socket. Queste slide sono distribuite con licenza Creative Commons Attribuzione-Non commerciale-condividi allo stesso modo 2.

Programmazione socket. Queste slide sono distribuite con licenza Creative Commons Attribuzione-Non commerciale-condividi allo stesso modo 2. Programmazione socket Queste slide sono distribuite con licenza Creative Commons Attribuzione-Non commerciale-condividi allo stesso modo 2.5 Italia Applicazioni di rete Realizzare un'applicazione di rete

Dettagli

5. I device driver. Device driver - gestori delle periferiche. Struttura interna del sistema operativo Linux. Tipi di periferiche. Tipi di periferiche

5. I device driver. Device driver - gestori delle periferiche. Struttura interna del sistema operativo Linux. Tipi di periferiche. Tipi di periferiche Device driver - gestori delle periferiche Struttura interna del sistema operativo Linux Sono moduli software che realizzano l interfacciamento e la gestione dei dispositivi periferici Interagiscono con

Dettagli

LABORATORIO di Reti di Calcolatori

LABORATORIO di Reti di Calcolatori LABORATORIO di Reti di Calcolatori Socket in linguaggio C: protocollo connectionless 1 of 14 v slide della docente Bibliografia v testo di supporto: D. Maggiorini, Introduzione alla programmazione client-server,

Dettagli

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ&

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ& (VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ& 3ULPRHVHUFL]LR6RFNHWVWUHDPFRQULGLUH]LRQH Si progetti un applicazione distribuita Client/Server per una rete di workstation UNIX (BSD oppure System V). In particolare,

Dettagli

Laboratorio di Sistemi Operativi 29-01-2009. Cognome Nome Mat.

Laboratorio di Sistemi Operativi 29-01-2009. Cognome Nome Mat. Il compito è costituito da domande chiuse, domande aperte ed esercizi. Non è consentito l uso di libri, manuali, appunti., etc. Tempo massimo 2 ore. Domande chiuse: ogni domanda corrisponde ad un punteggio

Dettagli

Introduzione ai socket

Introduzione ai socket Introduzione ai socket Socket locali Contiene lucidi tratti da: 2006-2007 Marco Faella, Clemente Galdi, Giovanni Schmid (Università di Napoli Federico II), 2004-2005 Walter Crescenzi(Universita di Roma

Dettagli

Sistemi di Elaborazione. Introduzione alla Programmazione distribuita

Sistemi di Elaborazione. Introduzione alla Programmazione distribuita Sistemi di Elaborazione Introduzione alla Programmazione distribuita Obiettivi Introdurre i concetti di base su programmazione distribuita Modello Client-Server Interfaccia Socket Progettare e realizzare

Dettagli

Un server di posta (che usa il protocollo SMTP) è identificato dal numero di porta 25.

Un server di posta (che usa il protocollo SMTP) è identificato dal numero di porta 25. Il protocollo TCP controlla che la trasmissione tra due end points avvenga correttamente. Non stabilisce alcun criterio su chi deve iniziare la comunicazione. Questo compito è svolto dalle applicazioni

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2017-18 Pietro Frasca Lezione 9 Giovedì 2-11-2017 Comunicazione con pipe Oltre che con la memoria condivisa

Dettagli

Laboratorio di Programmazione in Rete

Laboratorio di Programmazione in Rete Laboratorio di Programmazione in Rete a.a. 2005/2006 http://www.di.uniba.it/~lisi/courses/prog-rete/prog-rete0506.htm dott.ssa Francesca A. Lisi lisi@di.uniba.it Orario di ricevimento: mercoledì ore 10-12

Dettagli

Implementazione di un server. Server iterativo. Offro servizio ad un client alla volta. Dobbiamo scrivere un programma in C che offre un servizio

Implementazione di un server. Server iterativo. Offro servizio ad un client alla volta. Dobbiamo scrivere un programma in C che offre un servizio Implementazione di un server Server iterativo Offro servizio ad un client alla volta Dobbiamo scrivere un programma in C che offre un servizio Il sistema operativo tiene gli altri client in coda È la variante

Dettagli

Il sistema operativo LINUX Inter Process Communication. Sommario. popen ( ) PIPE. pipe ( ) popen ( ) Sistemi operativi Modulo II

Il sistema operativo LINUX Inter Process Communication. Sommario. popen ( ) PIPE. pipe ( ) popen ( ) Sistemi operativi Modulo II Il sistema operativo LINUX Inter Process Communication Sommario Giorgio Di Natale Stefano Di Carlo Politecnico di Torino Dip. Automatica e Informatica dup FIFO

Dettagli

Programmazione in Rete

Programmazione in Rete Programmazione in Rete a.a. 2005/2006 http://www.di.uniba.it/~lisi/courses/prog-rete/prog-rete0506.htm dott.ssa Francesca A. Lisi lisi@di.uniba.it Orario di ricevimento: mercoledì ore 10-12 Sommario della

Dettagli

Socket TCP. prima parte

Socket TCP. prima parte Socket TCP prima parte Cosa cambia: socket int fd = socket(pf_inet, SOCK_STREAM, 0); if (fd

Dettagli

Struttura interna del sistema operativo Linux

Struttura interna del sistema operativo Linux Struttura interna del sistema operativo Linux 5. I device driver A cura di: Anna Antola Giuseppe Pozzi DEI, Politecnico di Milano anna.antola/giuseppe.pozzi@polimi.it -versione del 30 marzo 2004-1-04.-04

Dettagli

14/12/2018 Informatici e di Telecomunicazioni

14/12/2018 Informatici e di Telecomunicazioni Informatici e di Telecomunicazioni 14 dicembre 2018 Parte I Classe V A INF ISIS E.Fermi Prof. Federico Santolini 1 (c) Primitive del servizio di trasporto (1/3) Premessa E utile ribadire che il livello

Dettagli

Sistemi Operativi Teledidattico

Sistemi Operativi Teledidattico Sistemi Operativi Teledidattico Anno 2002 3a esercitazione 5/10/2002 Paolo Torroni processi fork (creazione di un figlio) exec (sostituzione di codice del programma in esecuzione) wait (attesa della terminazione

Dettagli

Laboratorio di. Reti Informatiche. Corso di Laurea Triennale in Ingegneria Informatica A.A. 2017/2018. Ing. Carlo Vallati

Laboratorio di. Reti Informatiche. Corso di Laurea Triennale in Ingegneria Informatica A.A. 2017/2018. Ing. Carlo Vallati Laboratorio di Reti Informatiche Corso di Laurea Triennale in Ingegneria Informatica A.A. 2017/2018 Ing. Carlo Vallati carlo.vallati@unipi.it 1 Esercizi Programmazione con i socket 2 Programma di oggi

Dettagli

Reti di Calcolatori. Master "Bio Info" Reti e Basi di Dati Lezione 3

Reti di Calcolatori. Master Bio Info Reti e Basi di Dati Lezione 3 Reti di Calcolatori Sommario Software di rete Livello Trasporto (TCP) Livello Rete (IP, Routing, ICMP) Livello di Collegamento (Data-Link) Livello Trasporto (TCP) I protocolli di trasporto sono eseguiti

Dettagli

Server Iterativi. Server TCP Ricorsivi. Fork. Server Ricorsivi. un server iterativo gestisce una connessione alla volta. Prof.

Server Iterativi. Server TCP Ricorsivi. Fork. Server Ricorsivi. un server iterativo gestisce una connessione alla volta. Prof. Università degli studi di Salerno Laurea in Informatica a.a. 2003/04 TCP Ricorsivi Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ 1 Iterativi un server iterativo

Dettagli

Lezione n.3 LIVELLO TRASPORTO

Lezione n.3 LIVELLO TRASPORTO Università degli Studi di Pisa Lezione n.3 SSIS INFORMATICA LIVELLO TRASPORTO 30/11/2007 Laura Ricci Laura Ricci 1 LIVELLO TRASPORTO realizza un supporto per la comunicazione logica tra processi distribuiti

Dettagli

Laboratorio reti AA 2006/2007. Dott. Matteo Roffilli Ricevimento in ufficio dopo la lezione

Laboratorio reti AA 2006/2007. Dott. Matteo Roffilli Ricevimento in ufficio dopo la lezione Laboratorio reti AA 2006/2007 Dott. Matteo Roffilli roffilli@csr.unibo.it Ricevimento in ufficio dopo la lezione 1 Laboratorio reti AA 2006/2007 Per esercitarvi fate SSH su: alfa.csr.unibo.it si-tux00.csr.unibo.it.

Dettagli

Modello client-server

Modello client-server Modello -server Il server fornisce servizi sulla rete Viene eseguita l applicazione server su un host L applicazione attende connessioni dalla rete Il usufruisce del servizio attraverso la rete Deve conoscere

Dettagli

Organizzazione della lezione

Organizzazione della lezione Laboratorio Reti di Calcolatori (A.A. 2008-2009) Delfina Malandrino delmal@dia.unisa.it http://www.dia.unisa.it/professori/delmal/ Organizzazione della lezione 2 Struttura del corso Alcune informazioni

Dettagli

Laboratorio reti AA 2007/2008. Dott. Matteo Roffilli Ricevimento in ufficio dopo la lezione

Laboratorio reti AA 2007/2008. Dott. Matteo Roffilli Ricevimento in ufficio dopo la lezione Laboratorio reti AA 2007/2008 Dott. Matteo Roffilli roffilli@csr.unibo.it Ricevimento in ufficio dopo la lezione 1 Laboratorio reti AA 2007/2008 Per esercitarvi fate SSH su: alfa.csr.unibo.it si-tux00.csr.unibo.it.

Dettagli

Introduzione alla programmazione C di socket

Introduzione alla programmazione C di socket Introduzione alla programmazione C di socket (testo di riferimento : M. J. Donahoo, K. L. Calvert, TCP/IP Sockets in C: Practical Guide for Programmers. Morgan Kaufman Publishers. ) A.A. 2005/06 Una rete

Dettagli

Funzioni come parametri

Funzioni come parametri Funzioni come parametri Obiettivi: Riprendere il modello computazionale alla base del linguaggio C (e mostrare i parametri del main) Presentare e sperimentare le funzioni come parametri di funzione 1 Modello

Dettagli

Sistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi di Calcolo Multi-Nodo

Sistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi di Calcolo Multi-Nodo www.dis.uniroma1.it/~midlab Sistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi di Calcolo Multi-Nodo Corso di Laurea in Ingegneria Informatica e Automatica A.A. 2014-2015 Prof. Roberto

Dettagli

Modello a scambio di messaggi

Modello a scambio di messaggi Modello a scambio di messaggi Aspetti caratterizzanti il modello Canali di comunicazione Primitive di comunicazione 1 Aspetti caratterizzanti il modello modello architetturale di macchina (virtuale) concorrente

Dettagli

Esercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/2012. - Comunicazione Tra Processi (IPC) - - 2 Parte -

Esercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/2012. - Comunicazione Tra Processi (IPC) - - 2 Parte - Esercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/2012 - Comunicazione Tra Processi (IPC) - - 2 Parte - 1 Sommario Comunicazione tra processi su macchine diverse in rete: Socket TCP o Socket Stream

Dettagli

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore I puntatori Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore...... L operatore & fornisce l indirizzo di un oggetto: p = &c; assegna a p l indirizzo di c, i.e., p

Dettagli

Architettura dei calcolatori e sistemi operativi. Input Output. IO 3 Device driver

Architettura dei calcolatori e sistemi operativi. Input Output. IO 3 Device driver Architettura dei calcolatori e sistemi operativi Input Output IO 3 Device driver Device driver - gestori delle periferiche Sono moduli software che realizzano l interfacciamento e la gestione dei dispositivi

Dettagli

Uso di Internet: Esempio. Prof. Franco Callegati

Uso di Internet: Esempio. Prof. Franco Callegati Uso di Internet: Esempio Prof. Franco Callegati http://deisnet.deis.unibo.it Consultazione di una pagina WEB Per collegarsi a Internet un Utente apre il proprio Browser Web (B) Dal Sistema Operativo (Es:

Dettagli

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori a.a. 2009/10

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori a.a. 2009/10 Corso di Laurea in Ingegneria Informatica Corso di Reti di Calcolatori a.a. 2009/10 Roberto Canonico (roberto.canonico@unina.it) Antonio Pescapè (pescape@unina.it) Le socket di Berkeley Le socket di Berkeley

Dettagli

*HVWLRQHDYDQ]DWDGHOOH6RFNHWLQ& ODSULPLWLYDVHOHFW

*HVWLRQHDYDQ]DWDGHOOH6RFNHWLQ& ODSULPLWLYDVHOHFW *HVWLRQHDYDQ]DWDGHOOH6RFNHWLQ& ODSULPLWLYDVHOHFW 7&3H8'3&OLHQW6HUYHUXVDQGRVHOHFW Si progetti un applicazione distribuita Client/Server per una rete di workstation UNIX (BSD oppure System V). In particolare,

Dettagli

Sistemi Operativi (M. Cesati)

Sistemi Operativi (M. Cesati) Sistemi Operativi (M. Cesati) Compito scritto del 28 giugno 2016 (Traccia A) Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine

Dettagli

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length); Fondamenti di Informatica L-A (A.A. 004/005) - Ingegneria Informatica Prof.ssa Mello & Prof. Bellavista I Prova Intermedia del 11/11/004 - durata h - COMPITO B Esercizio 1 (punti 1) Una associazione di

Dettagli

Corso di Informatica

Corso di Informatica CdLS in Odontoiatria e Protesi Dentarie Corso di Informatica Prof. Crescenzio Gallo crescenzio.gallo@unifg.it Protocolli di trasmissione 2 Introduzione Un protocollo di trasmissione è un insieme di regole

Dettagli

Lo strato di Trasporto

Lo strato di Trasporto Corso di Fondamenti di Reti di Telecomunicazioni LT - ELE / LM-TLC Reti di Telecomunicazioni a.a. 2016-2017 Lo strato di Trasporto Internet è composta da host connessi a reti a commutazione di pacchetto,

Dettagli

Le socket di Berkeley

Le socket di Berkeley Corso di Reti di Calcolatori I Simon Pietro Romano (spromano@unina.it) Antonio Pescapè (pescape@unina.it) Giorgio Ventre (giorgio@unina.it) Roberto Canonico (roberto.canonico@unina.it) Le socket di Berkeley

Dettagli

Costruzione di Messaggi. (alcune considerazioni)

Costruzione di Messaggi. (alcune considerazioni) Costruzione di Messaggi (alcune considerazioni) Framing & Parsing Client e Server devono accordarsi su come l informazione debba essere codificata Framing è il problema di formattare il messaggio in modo

Dettagli

Laboratorio di. Reti Informatiche. Corso di Laurea Triennale in Ingegneria Informatica A.A. 2016/2017. Ing. Niccolò Iardella

Laboratorio di. Reti Informatiche. Corso di Laurea Triennale in Ingegneria Informatica A.A. 2016/2017. Ing. Niccolò Iardella Laboratorio di Reti Informatiche Corso di Laurea Triennale in Ingegneria Informatica A.A. 2016/2017 Ing. Niccolò Iardella niccolo.iardella@unifi.it 1 Esercizi Programmazione con i socket 2 Programma di

Dettagli

Socket Programming. Socket Programming. Università di Palermo

Socket Programming. Socket Programming. Università di Palermo Socket Programming Socket Programming 1 Architettura Processo (Messagi) HTTP, SMTP, DNS, IMAP,... Trasporto (Messagi) TCP UDP Rete (Pacchetti) ARP IP ICMP Data link (Frames) Ethernet, FDDI, 802.11,...

Dettagli

Laboratorio reti AA 2008/2009. Dott. Matteo Roffilli Ricevimento in ufficio dopo la lezione

Laboratorio reti AA 2008/2009. Dott. Matteo Roffilli Ricevimento in ufficio dopo la lezione Laboratorio reti AA 2008/2009 Dott. Matteo Roffilli roffilli@csr.unibo.it Ricevimento in ufficio dopo la lezione 1 Laboratorio reti AA 2008/2009 Per esercitarvi fate SSH su: alfa.csr.unibo.it si-tux00.csr.unibo.it.

Dettagli

Reti di Calcolatori:

Reti di Calcolatori: Reti di Calcolatori: Internet, Intranet e Mobile Computing a.a. 2007/2008 http://www.di.uniba.it/~lisi/courses/reti/reti0708.htm dott.ssa Francesca A. Lisi lisi@di.uniba.it Orario di ricevimento: mercoledì

Dettagli