Problema. I/O Multiplexing. Struttura delle Operazioni di Lettura. Modelli di I/O. Prof. Vincenzo Auletta

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Problema. I/O Multiplexing. Struttura delle Operazioni di Lettura. Modelli di I/O. Prof. Vincenzo Auletta"

Transcript

1 a.a. 2003/04 Problema I/O Multiplexing Prof. Vincenzo Auletta Università degli studi di Salerno Laurea in Informatica 1 Un applicazione deve gestire più input simultaneamente Es. il echo gestisce due flussi di input Standard input (leggere da tastiera) un socket (leggere dal socket) Mentre l applicazione è bloccata su un descrittore non si accorge di quello che succede sull altro il echo bloccato sulla da stdin non legge il messaggio FIN ricevuto dal server In genere una funzione di input si blocca se non ci sono dati da leggere può rimanere bloccata per molto tempo l altro descrittore non può essere controllato Serve un meccanismo per poter esaminare più canali di input contemporaneamente Il primo canale che produce dati viene letto Modelli di I/O Struttura delle Operazioni di Lettura 2 UNIX implementa diversi modelli di I/O Modelli sincroni: il processo quando esegue una operazione di o scrittura si blocca fino al completamento dell operazione Modelli asincroni: il processo può effettuare altre operazioni mentre l operazione di /scrittura viene effettuata Modelli sincroni I/O bloccante I/O non bloccante I/O multiplexing I/O guidato da segnali 3 In una operazione di da un canale di I/O possiamo distinguere due fasi 1. Attesa per i dati da parte del kernel 2. Copia dei dati dal kernel al processo che deve usarli

2 I/O Bloccante I/O non Bloccante applicazione kernel applicazione kernel 4 elabora i dati BLOCCATA Restituisce OK ATTESA COPIA Non ci sono dati pronti dati pronti inizia copia copia completata 5 elabora i dati ATTESA EWOULDBLOCK EWOULDBLOCK EWOULDBLOCK Restituisce OK ATTESA COPIA Non ci sono dati pronti dati pronti inizia copia copia completata I/O Multiplexing I/O Guidato da Segnali applicazione kernel applicazione kernel 6 select (aspetta dati su un qualsiasi descrittore) elabora i dati BLOCCATA BLOCCATA Restituisce descrittore pronto Restituisce OK ATTESA COPIA Non ci sono dati pronti dati pronti inizia copia copia completata 7 setta handler per SIGIO SIGIO handler elabora i dati continua esecuzione BLOCCATA sigaction system call return SIGIO Restituisce OK COPIA Non ci sono dati pronti dati pronti inizia copia copia completata

3 I/O Asincrono Funzione select 8 asincrona handler del segnale elabora i dati applicazione continua esecuzione system call return invia segnale kernel COPIA Non ci sono dati pronti dati pronti inizia copia copia completata 9 #include <sys/select.h> #include <sys/time.h> int select(int maxfd, fd_set readset, fd_set writeset, fd_set exceptionset, struct timeval *timeout); Restituisce se errore 0 se scaduto il timeout numero di descrittori pronti Permette di controllare contemporaneamente uno o più descrittori per, scrittura o gestione errori 10 Timeout della Select timeout è il tempo massimo che la system call attende per individuare un descrittore pronto è una struct timeval struct timeval { long tv_sec; /* numero di secondi */ long tv_usec; /* numero di microsecondi */ ; timeout = 0 aspetta fino a quando un descrittore è pronto timeout = { 3; 5; aspetta fino al timeout e poi esce anche se non ci sono descrittori pronti alcuni S.O. arrotondano a multipli di 10 microsecondi timeout = { 0; 0; controlla i descrittori ed esce immediatamente (polling) 11 Insiemi di Descrittori Insiemi di descrittori da controllare readset: pronti per la writeset: pronti per la scrittura exceptionset: condizioni di eccezione Arrivo di dati fuori banda su un socket Informazioni di controllo da uno pseudo terminale readset, writeset e exceptionset sono variabili di tipo fd_set in genere è un array di interi in cui ogni bit rappresenta un descrittore primo elemento dell array rappresenta descrittori da 0 a 31 secondo elemento dell array rappresenta descrittori da 32 a 63 dettagli implementativi nascosti nella definizione

4 Operazioni su Insiemi di Descrittori void FD_ZERO(fd_set *fdset) Azzera la struttura fdset void FD_SET(int fd, fd_set *fdset) Mette a 1 il bit relativo a fd void FD_CLR(int fd, fd_set *fdset) Mette a 0 il bit relativo a fd int FD_ISSET(int fd, fd_set *fdset) Controlla se il bit relativo a fd è a 1 Macro utilizzate per operare sugli insiemi di descrittori La costante FD_SETSIZE è il numero di descrittori in fd_set definita in <sys/select.h> (solitamente 1024) in genere si usano meno descrittori [0, maxd] è l intervallo di descrittori effettivamente utilizzati utilizzati Es. se siamo interessati ai descrittori 1,4,7,9 maxd = i descrittori iniziano da 0 13 Descrittori Pronti La select rileva i descrittori pronti significato diverso per ciascuno dei tre gruppi Un socket è pronto in se ci sono almeno LWM (low-water mark) byte da leggere LWM selezionabile tramite opzioni del socket per default è 1 il socket è stato chiuso in (è stato ricevuto il FIN) l operazione di ritorna EOF Il socket è un socket di ascolto e ci sono delle connessioni completate c è un errore pendente sul socket L operazione di ritornerà 14 Descrittori Pronti Un socket è pronto in scrittura se Il numero di byte liberi nel buffer di spedizione del socket è maggiore di LWM LWM selezionabile tramite opzioni del socket per default è 2048 L operazione di scrittura restituisce il numero di byte effettivamente passati al livello di trasporto Il socket è stato chiuso in scrittura Un operazione di scrittura genera SIGPIPE C è un errore L operazione di scrittura ritornerà e errno specificherà l errore Un socket è pronto per un eccezione se Arrivo di dati fuori banda 15 Client echo con select 1 void str_clisel_echo(file *fd, int sockd) { int maxd; fd_set rset; char sendline[maxline], recvline[maxline]; int n; FD_ZERO(&rset); (1) for( ; ; ) { FD_SET(fileno(fd), &rset); FD_SET(sockd, &rset); (2) maxd = MAX(fileno(fd), sockd) + 1; (3) if( select(maxd, &rset, NULL, NULL, NULL) < 0 ) (4) err_sys("errore nella select"); 1. azzera l array dei descrittori da controllare in 2.setta il descrittore del socket e del file per 3.calcola il massimo descrittore da controllare 4.invoca la select

5 16 0) Client echo con select 2 if( FD_ISSET(sockd, &rset) ) { (5) if ( (n = readline(sockd, recvline, MAXLINE)) < err_sys("errore nella readline"); if (n == 0) err_quit("str_clisel_echo: server morto prematuramente"); if( fputs(recvline, stdout) == EOF ) err_sys("errore nella fputs"); if( FD_ISSET(fileno(fd), &rset) ) { (6) if( fgets(sendline, MAXLINE, fd) == NULL) return; if( (writen(sockd, sendline, strlen(sendline))) < 0) err_sys("errore nella write"); 5.controlla se il socket è leggibile legge dal socket e stampa su stdout 6.controlla se il file è leggibile legge da stdin e scrive sul socket 17 Condizioni Gestite dal Client echo Condizioni gestite da select in su stdin ed un socket dal socket se il server invia dati il socket è leggibile e readline restituisce > 0 se il server manda FIN il socket è leggibile e readline restituisce 0 se il server manda RST il socket è leggibile e readline restituisce < 0 da stdin se l utente invia dati il file è leggibile e fgets restituisce > 0 se l utente invia EOF il file è leggibile e fgets restituisce 0Condizioni gestite da select in su stdin ed un socket Data o EOF stdin RST TCP sock et data Client FIN 18 I/O Multiplexing nel Server Possiamo usare l I/O multiplexing anche nel server per ascoltare su più socket contemporaneamente un unico processo iterativo ascolta sia sul socket di ascolto che su tutti i socket di connessione Client1 Server listend() connd1() connd2() connd3() Client2 Client3 19 Strutture Dati Utilizzate dal Server Un insieme di descrittori rset (di tipo fd_set) contiene la lista dei descrittori socket utilizzati dal server (sia di quello di ascolto che quelli di connessione) Un array di interi contiene i descrittori utilizzati entrambe di dimensione FD_SETSIZE FD_SETSIZE rset fd0 fd1 fd2 fd3 fd4 fd maxd + 1

6 Esempio 1 Il server crea il socket di ascolto setta il bit corrispondente in rset (supp. sockd = 3) maxd = 3 Il server utilizza select per controllare la leggibilità di tutti i descrittori di rset Esempio 2 Il server accetta due richieste di connessione e crea i socket di connessione salva i descrittori del socket nelle prime posizioni di e setta i bit corrispondenti in rset maxd = 5 Il server utilizza select per controllare la leggibilità di tutti i descrittori di rset rset fd0 fd1 fd2 fd3 fd4 fd rset fd0 fd1 fd2 fd3 fd4 fd FD_SETSIZE maxd FD_SETSIZE maxd Esempio 3 Il server chiude la connessione sul socket 4 cancella il descrittore da e azzera il bit corrispondente in rset maxd = 5 Il server utilizza select per controllare la leggibilità di tutti i descrittori di rset FD_SETSIZE rset fd0 fd1 fd2 fd3 fd4 fd maxd Server echo con select 1 int main(int argc, char **argv) { int listend, connd, sockd; int i, maxi, maxd; int ready, [FD_SETSIZE]; char buff[maxline]; fd_set rset, allset; ssize_t n; struct sockaddr_in servaddr, cliaddr; socklen_t cliaddr_len; /* esegue socket(), bind() e listen() */ maxd = listend; (1) [0] = listend; (2) maxi = ; for ( i = 1; i < FD_SETSIZE; i++) (3) [i] = ; FD_ZERO(&allset); (4) FD_SET(listend, &allset); (5) 1. inizializza il numero di descrittori 2. inserisce listend in 3. inizializza il resto dell array a 1 4. azzera l insieme di descrittori registrati per la select 5. registra listend

7 24 Server echo con select 2 for ( ; ; ) { rset = allset; (5) if( (ready = select(maxd+1, &rset, NULL, NULL, NULL)) < 0 ) (6) err_sys("errore nella select"); 5.setta l insieme dei descrittori da controllare in 6.chiama la select esce quando un descrittore è pronto restituisce il numero di descrittori pronti 25 Server echo con select 3 if( FD_ISSET(listend, &rset) ) { (7) cliaddr_len = sizeof(cliaddr); if( (connd = accept(listend, (struct sockaddr *) &cliaddr, &cliaddr_len)) < 0) (8) err_sys("errore nella accept"); for(i = 0; i < FD_SETSIZE; i++) (9) if( [i] < 0 ) { [i] = connd; break; if( i == FD_SETSIZE ) (10) err_quit("troppi "); FD_SET(connd, &allset); (11) if( connd > maxd ) maxd = connd; if( i > maxi ) maxi = i; if( --ready <= 0 ) continue; 7. controlla se il socket di ascolto è leggibile 8. invoca la accept 9. inserisce il socket di connessione in un posto libero di 10. se non ci sono posti segnala errore 11. registra il socket ed aggiorna maxd 26 Server for( i = 0; i <= maxi; echo i++ ) { con select (12) 4 0) { (14) (15) if( (sockd = [i]) < 0 ) continue; if ( FD_ISSET(sockd, &rset) ) { (13) if ( (n = readline(sockd, buff, MAXLINE)) == if( close(sockd) == ) err_sys("errore nella close"); FD_CLR(sockd, &allset); [i] = ; else if( writen(sockd, buff, n) < 0 ) err_sys("errore nella write"); if ( --ready <= 0 ) break; 12. controlla tutti i socket di ascolto se sono leggibili 13. se un socket è leggibile invoca la readline 14. se ha letto l EOF chiude il socket e lo cancella da e allset 15. altrimenti fa l echo 27 Funzione poll #include <sys/poll.h> int poll(struct pollfd *fdarray, unsigned long nfds, int timeout); Restituisce se errore 0 se scaduto il timeout numero di descrittori pronti simile a select invece di utilizzare gli insiemi di descrittori fd_set utilizza un array di strutture pollfd consente di specificare le condizioni da testare per ogni descrittore

8 28 Parametri della poll struct pollfd* fdarray array di strutture che contengono informazioni sui descrittori da controllare e sugli eventi da rilevare unsigned long nfds lunghezza dell array fdarray int timeout timeout della poll specificato in millisecondi < 0 (aspetta per sempre) = 0 (esce immediatamente) > 0 (aspetta per il numero di millisecondi specificato) 29 Struttura pollfd struct pollfd { int fd; /* descrittore */ short events; /* eventi da controllare */ short revents; /* eventi riscontrati dalla poll */ ; per ogni descrittore è possibile definire gli eventi che devono essere verificati dalla poll events è un array di flag un flag per ogni tipo di evento quando la poll termina scrive in revents gli eventi rilevati sul descrittore 30 Eventi Rilevati da poll POLLIN /* dati normali o a priorità disponibili in */ POLLOUT /* dati normali disponibili in scrittura */ POLLERR /* è stato rilevato un errore */ POLLHOP /* è stata rilevata la chiusura della connessione */ POLLNVAL /* descrittore non corrisponde ad un socket aperto */ solo POLLIN e POLLOUT possono essere specificati come eventi da rilevare gli altri eventi vengono settati in revents dalla poll() se rileva un errore POSIX 1.g prevede anche altri eventi che non sono supportati da Linux 31 Server echo con poll 1 int main(int argc, char **argv) { int listend, connd, sockd; int i, maxi, ready; char buff[maxline]; ssize_t n; struct sockaddr_in servaddr, cliaddr; socklen_t cliaddr_len; struct pollfd [OPEN_MAX]; /* invoca socket(), bind() e listen() */ [0].fd = listend; (1) [0].events = POLLIN; for ( i = 1; i < OPEN_MAX; i++) (2) [i].fd = ; maxi = 0; for ( ; ; ) { if( (ready = poll(, maxi + 1, )) < 0 ) (3) err_sys("errore nella poll"); 1.registra listend in [0] e specifica che deve essere controllato in 2.inizializza il resto dell array a 1 3.invoca la poll

9 32 Server echo con poll 2 if( [0].revents & POLLIN ) { (4) cliaddr_len = sizeof(cliaddr); if( (connd = accept(listend, (struct sockaddr *) &cliaddr, &cliaddr_len)) < 0) (5) err_sys("errore nella accept"); for(i = 1; i < OPEN_MAX; i++) (6) if( [i].fd < 0 ) { [i].fd = connd; break; if( i == OPEN_MAX ) (7) err_quit("troppi "); [i].events = POLLIN; (8) if( i > maxi ) maxi = i; (9) if( --ready <= 0 ) continue; 4. controlla se il socket di ascolto è leggibile 5. invoca la accept 6. inserisce il socket di connessione in un posto libero di 7. se non ci sono posti segnala errore 8. registra gli eventi da rilevare sul nuovo descrittore 9. aggiorna maxi 33 Server echo con poll 3 (11) (12) (13) for( i = 1; i <= maxi; i++ ) { (10) if( (sockd = [i].fd) < 0 ) continue; if ( [i].revents & (POLLIN POLLERR) ) { if ( (n = readline(sockd, buff, MAXLINE)) < 0) { if( errno = ECONNRESET ) { if( close(sockd) == ) err_sys("errore nella close"); [i].fd = ; else err_sys("errore nella readline"); else if( n == 0 ) { if( close(sockd) == ) err_sys("errore nella close"); [i].fd = ; else if( writen(sockd, buff, n) < 0 ) err_sys("errore nella writen"); if ( --ready <= 0 ) break; 10. controlla tutti i socket di ascolto se sono leggibili 11. se un socket è leggibile o ha un errore pendente invoca la readline 12. se ha letto l EOF o un RST chiude il socket e lo cancella da 13. altrimenti fa l echo Attacchi Denial of Service Soluzioni per Attacchi DOS 34 Server iterativi che utilizzano l I/O multiplexing sono soggetti ad attacchi di tipo DOS (Denial of Service) un malizioso può far in modo che il server non possa rispondere alle richieste degli altri Esempio Un si connette, spedisce un solo byte (che non sia un newline) e non fa più nulla Il server rileva che il socket di connessione è leggibile ed invoca la readline la readline si blocca in attesa di un newline Il server è bloccato e nessun altro riceverà il servizio 35 Usare un singolo processo per ogni Utilizzare un timeout sulle operazioni di I/O Usare I/O non-bloccante

10 36 Stop-and-wait e Input Batch Il echo opera in modalità stop-and-wait: Spedisce una linea di input e si blocca in attesa della risposta del server echo particolarmente inefficiente quando l utente deve inviare molti dati Se l utente fornisce l input in modalità batch il programma segnala un errore (es. _sel_echo < nome_file) quando la fgets legge l EOF il chiude la connessione e termina il server potrebbe ancora richiedere ritrasmissioni di segmenti o inviare risposte 37 Shutdown della Connessione Quando il legge l EOF dal file di chiude il socket solo in scrittura (half-close) rimane in ascolto per le risposte del server risponde alle eventuali richieste di ritrasmissioni di segmenti o di invii di ACK L operazione di half-close è implementata dalla system call shutdown() 38 Funzione shutdown #include <sys/socket.h> int shutdown(int sd, int howto); Restituisce se errore 0 se OK l operazione della funzione dipende dal valore di howto SHUT_RD: chiude il socket solo in non riceve più nulla ed ignora anche i dati nel buffer eventuali altri dati sono riscontrati da TCP ma scartati SHUT_WR: chiude il socket solo in scrittura non scrive più nulla ma invia i dati attualmente nel buffer chiusura effettuata indipendentemente dal valore del reference counter SHUT_RDWR: entrambe le due opzioni 39 Client echo con shutdown 1 void str_cliselshut_echo(file *fd, int sockd) { int maxd, stdineof; fd_set rset; char sendline[maxline], recvline[maxline]; int n; stdineof = 0; (1) FD_ZERO(&rset); for( ; ; ) { if( stdineof == 0 ) (2) FD_SET(fileno(fd), &rset); FD_SET(sockd, &rset); maxd = MAX(fileno(fd), sockd) + 1; if( select(maxd, &rset, NULL, NULL, NULL) < 0 ) (3) err_sys("errore nella select"); 1. inizializza stdineof a 0 2. se l utente non ha inviato l EOF setta fd leggibile 3. invoca la select

11 40 0) Client echo con shutdown 2 if( FD_ISSET(sockd, &rset) ) { (4) if ( (n = readline(sockd, recvline, MAXLINE)) < err_sys("errore nella readline"); if( n == 0 ) { (5) if( stdineof == 1 ) return; else err_quit("str_clisel_echo: server morto prematuramente"); if( fputs(recvline, stdout) == EOF ) (6) err_sys("errore nella fputs"); 4. controlla se il socket è leggibile 5. se il server ha inviato l EOF ed il aveva già chiuso la connessione esce altrimenti segnala errore 6. altrimenti stampa su stdout 41 Client if( FD_ISSET(fileno(fd), echo &rset) con ) { shutdown 3 (8) (7) if( fgets(sendline, MAXLINE, fd) == NULL) { stdineof = 1; if( shutdown(sockd, SHUT_WR) < 0 ) err_sys("errore nella shutdown"); FD_CLR(fileno(fd), &rset); (9) continue; if( (writen(sockd, sendline, strlen(sendline))) < 0)(10) err_sys("errore nella write"); 7. controlla se fd è leggibile 8. se ha letto l EOF setta stdineof ed esegue la shutdown chiude la connession e in scrittura 9. cancella fd da rset 10. altrimenti scrive sul socket

P3-04: I/O multiplexing

P3-04: I/O multiplexing Autunno 2002 Prof. Roberto De Prisco -04: I/O multiplexing Università degli studi di alerno Laurea e Diploma in Informatica Problema 04.2 Un programma deve gestire due input simultaneamente tandard input

Dettagli

Funzioni bloccanti e soluzioni

Funzioni bloccanti e soluzioni Funzioni bloccanti e soluzioni La funzione accept() e le funzioni per la gestione dell I/O (ad es., read() e write()) sono bloccanti Ad es., le funzioni read() e recv() rimangono in attesa finché non vi

Dettagli

Funzioni bloccanti e soluzioni. Funzioni bloccanti e soluzioni (2) Parametri della funzione select() Funzione select()

Funzioni bloccanti e soluzioni. Funzioni bloccanti e soluzioni (2) Parametri della funzione select() Funzione select() Funzioni bloccanti e soluzioni La funzione accept() e le funzioni per la gestione dell I/O (ad es., read() e write()) sono bloccanti Ad es., le funzioni read() e recv() rimangono in attesa finché non vi

Dettagli

Timeout. Socket Avanzati. Funzione alarm() Client echo UDP con alarm

Timeout. Socket Avanzati. Funzione alarm() Client echo UDP con alarm I semestre 02/03 Socket Avanzati Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/~auletta/ Università degli studi di Salerno Laurea e Diploma in Informatica 1 Timeout Abbiamo visto

Dettagli

Progettazione di Applicazioni Robuste. Applicazione Echo. Schema Generale di un Server TCP Ricorsivo 1. Applicazione echo

Progettazione di Applicazioni Robuste. Applicazione Echo. Schema Generale di un Server TCP Ricorsivo 1. Applicazione echo a.a. 2003/04 Applicazione Echo Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Progettazione di Applicazioni Robuste nel progettare applicazioni su rete robuste

Dettagli

Laboratorio di Reti di Calcolatori

Laboratorio di Reti di Calcolatori Laboratorio di Reti di Calcolatori I/O Multiplexing. Paolo D Arco Abstract copo della lezione è presentare i vari modelli di I/O, descrivere la funzione select(), e costruire un echo client robusto ed

Dettagli

funzione fork() La funzione fork è usata per duplicare un processo. #include <unistd.h> pid_t fork (void);

funzione fork() La funzione fork è usata per duplicare un processo. #include <unistd.h> pid_t fork (void); La funzione fork è usata per duplicare un processo. #include pid_t fork (void); funzione fork() restituisce -1 in caso di errore. Se tutto va a buon fine restituisce 0 nel processo figlio ed

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

SERVER CLIENT. Struttura di un Applicazione UDP. Socket UDP. Parametri di sendto. Funzioni di Input/Output. Prof. Vincenzo Auletta

SERVER CLIENT. Struttura di un Applicazione UDP. Socket UDP. Parametri di sendto. Funzioni di Input/Output. Prof. Vincenzo Auletta I semestre 03/04 Struttura di un Applicazione UDP Socket UDP socket() bind() Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ CLIENT socket() sendto() Dati (richiesta)

Dettagli

LABORATORIO di Reti di Calcolatori

LABORATORIO di Reti di Calcolatori LABORATORIO di Reti di Calcolatori Socket in linguaggio C: server concorrente single-process 1 of 12 v slide della docente Bibliografia v testo di supporto: D. Maggiorini, Introduzione alla programmazione

Dettagli

funzione close() La funzione close è utilizzata normalmente per chiudere un descrittore di file, è utilizzata per chiudere un socket e terminare una

funzione close() La funzione close è utilizzata normalmente per chiudere un descrittore di file, è utilizzata per chiudere un socket e terminare una funzione close() La funzione close è utilizzata normalmente per chiudere un descrittore di file, è utilizzata per chiudere un socket e terminare una connessione TCP. int close (int socketfd); restituisce

Dettagli

Acknowledgment: Prof Vincenzo Auletta, Università di Salerno. Approfondimento alla programmazione distribuita

Acknowledgment: Prof Vincenzo Auletta, Università di Salerno. Approfondimento alla programmazione distribuita Reti Informatiche Approfondimento alla programmazione distribuita Acknowledgment: Prof Vincenzo Auletta, Università di Salerno Introduzione API send e receive bloccanti e non API select Socket UDP Esempio

Dettagli

Laboratorio di Reti di Calcolatori

Laboratorio di Reti di Calcolatori Laboratorio di Reti di Calcolatori Funzioni utili, server ricorsivi, echo client ed echo server. Paolo D Arco Abstract Scopo della lezione è presentare alcune funzioni di utilità generale (e.g., funzioni

Dettagli

I/O su Socket TCP: read()

I/O su Socket TCP: read() I/O su Socket TCP: read() I socket TCP, una volta che la connessione TCP sia stata instaurata, sono accedibili come se fossero dei file, mediante un descrittore di file (un intero) ottenuto tramite una

Dettagli

Laboratorio di Reti di Calcolatori

Laboratorio di Reti di Calcolatori Laboratorio di Reti di Calcolatori Socket UDP. Paolo D Arco Abstract Scopo della lezione è descrivere le funzioni che l interfaccia dei socket offre per far interagire client e server attraverso il protocollo

Dettagli

Sistemi operativi Modulo II I semafori 2 Select

Sistemi operativi Modulo II I semafori 2 Select Il sistema operativo LINUX Semafori 2 Giorgio Di Natale Stefano Di Carlo Politecnico di Torino Dip. Automatica e Informatica La system call read è bloccante Non

Dettagli

Opzioni del Socket. Socket Options. Opzioni di Livello Socket. Livello delle Opzioni

Opzioni del Socket. Socket Options. Opzioni di Livello Socket. Livello delle Opzioni a.a. 2003/04 Opzioni del Socket Socket Options Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea in Informatica 1 Ogni socket

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

GESTIONE DEI FILE IN C. Docente: Giorgio Giacinto AA 2008/2009

GESTIONE DEI FILE IN C. Docente: Giorgio Giacinto AA 2008/2009 Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2

Dettagli

Reti di Calcolatori - Laboratorio. Lezione 5. Gennaro Oliva

Reti di Calcolatori - Laboratorio. Lezione 5. Gennaro Oliva Reti di Calcolatori - Laboratorio Lezione 5 Gennaro Oliva Server basato su I/O Multiplex Per realizzare un server è possibile utilizzare l'i/o Multiplex Un unico processo iterativo gestisce il socket che

Dettagli

I files in C. A cura del prof. Ghezzi

I files in C. A cura del prof. Ghezzi I files in C A cura del prof. Ghezzi 1 Perchè i files? Realizzano la persistenza dei dati dati che sopravvivono all esecuzione del programma Sono delle strutture di dati sequenziali 2 Files e S.O. I files

Dettagli

Timeout. Socket Avanzati. Client echo UDP con alarm. Funzione alarm()

Timeout. Socket Avanzati. Client echo UDP con alarm. Funzione alarm() Università degli studi di Salerno Laurea in Informatica a.a. 2003/04 Socket Avanzati Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ 1 Timeout Abbiamo visto molte

Dettagli

Sviluppo di Applicazioni su Rete. Introduzione all API socket di Berkeley. Interazione tra Processi. Modello Client-Server

Sviluppo di Applicazioni su Rete. Introduzione all API socket di Berkeley. Interazione tra Processi. Modello Client-Server a.a. 2003/04 Introduzione all API socket di Berkeley Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea e Diploma in Informatica

Dettagli

Interazione con il DNS Conversioni di Nomi ed Indirizzi

Interazione con il DNS Conversioni di Nomi ed Indirizzi a.a. 2003/04 Interazione con il DNS Conversioni di Nomi ed Indirizzi Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea in

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

Esame del 17 Luglio 2012

Esame del 17 Luglio 2012 Corso di Laurea in Informatica A.A. 2011-2012 Classe 2: matr. Congrue a 1 mod. 3 Prof. Vincenzo Auletta Esame del 17 Luglio 2012 Esercizio Punteggio 1 /5 2 /5 NOME: COGNOME: MATRICOLA: 3 /5 4 /5 5 /6 6

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

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

*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

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

Capitolo 5 -- Stevens

Capitolo 5 -- Stevens Libreria standard di I/O Capitolo 5 -- Stevens Libreria standard di I/O rientra nello standard ANSI C perché è stata implementata su molti sistemi operativi oltre che su UNIX le sue funzioni individuano

Dettagli

Reti di Calcolatori - Laboratorio. Lezione 7. Gennaro Oliva

Reti di Calcolatori - Laboratorio. Lezione 7. Gennaro Oliva Reti di Calcolatori - Laboratorio Lezione 7 Gennaro Oliva Opzioni di socket Ogni socket aperto ha un insieme di opzioni associate che ne determinano il comportamento Distinguiamo due tipi: opzioni binarie

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

Esempi di Client e Server

Esempi di Client e Server Esempi di Client e Server Corso di laurea in Informatica Laboratorio di Reti di Calcolatori A.A. 0-0 Simone Bassis bassis@di.unimi.it #include #include #include #include

Dettagli

Socket II MIDLAB. Sirio Scipioni. M I D L A B.

Socket II MIDLAB. Sirio Scipioni.  M I D L A B. Socket II Sirio Scipioni scipioni@dis.uniroma1.it http://www.dis.uniroma1.it/~scipioni MIDLAB http://www.dis.uniroma1.it/~midlab Sommario Richiami sui processi Echo server TCP (multi processo) Richiami

Dettagli

Laboratorio di Sistemi Operativi

Laboratorio di Sistemi Operativi II Semestre - Marzo/Giugno 2008 matricole congr. 0 mod 3 I/O non bufferizzato-2 dup, dup2 System Call sync, fsync, fdatasync fcntl 2 1 Condivisione di file Unix supporta la possibilità che più processi

Dettagli

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura

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

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

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

(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

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

Socket per TCP: Fondamenti

Socket per TCP: Fondamenti Socket per TCP: Fondamenti Network Applications Molte applicazioni di rete sono formate da due programmi distinti (che lavorano su due diversi host) uno detto server ed uno detto client. Il server si mette

Dettagli

Sistemi Operativi SISTEMI DI INPUT/OUTPUT. D. Talia - UNICAL. Sistemi Operativi 10.1

Sistemi Operativi SISTEMI DI INPUT/OUTPUT. D. Talia - UNICAL. Sistemi Operativi 10.1 SISTEMI DI INPUT/OUTPUT 10.1 Sistemi I/O Hardware di I/O Interfaccia di I/O per le applicazioni Sottosistema per l I/O del kernel Trasformazione delle richieste di I/O Stream Prestazioni 10.2 I/O Hardware

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

Parametri valore-risultatorisultato

Parametri valore-risultatorisultato Formato dei dati Programmazione di applicazioni di rete con socket - parte 2 La comunicazione deve tener conto della diversa rappresentazione dei dati Rappresentazione in Big Endian e Little Endian Soluzione

Dettagli

Programmazione di applicazioni di rete con socket - parte 2

Programmazione di applicazioni di rete con socket - parte 2 Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria Programmazione di applicazioni di rete con socket - parte 2 Corso di Sistemi Distribuiti Valeria Cardellini Anno accademico 2008/09 Formato

Dettagli

Una semplice applicazione client/server 1

Una semplice applicazione client/server 1 Una semplice applicazione client/server 1 Il nostro obiettivo In questa parte del corso implementeremo un applicazione client/server che usa i socket Internet disponibili nei sistemi Unix/Linux. Nello

Dettagli

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE Input/output da file Il linguaggio C non contiene istruzioni di I/O, in quanto tali operazioni vengono eseguite tramite funzioni di libreria standard. Questo approccio rende estremamente flessibile e potente

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. 2016-17 Pietro Frasca Lezione 20 Giovedì 22-12-2016 Comunicazione: pipe In Unix, processi possono comunicare

Dettagli

Gestione dei file. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico

Gestione dei file. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico Gestione dei file Stefano Ferrari Università degli Studi di Milano stefano.ferrari@unimi.it Programmazione anno accademico 2016 2017 Gli stream Si dice stream qualsiasi sorgente di dati in ingresso e qualsiasi

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

request reply richiesta client processo di servizio processo server principale From - Valeria Cardellini, Corso Sist. Distr. A.A.

request reply richiesta client processo di servizio processo server principale From - Valeria Cardellini, Corso Sist. Distr. A.A. Applicazioni di rete Forniscono i servizi di alto livello utilizzati dagli utenti Determinano la percezione di qualità del servizio (QoS) che gli utenti hanno della rete sottostante Programmazione di applicazioni

Dettagli

Esercitazione [5] Input/Output su Socket

Esercitazione [5] Input/Output su Socket Esercitazione [5] Input/Output su 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 Calcolo

Dettagli

SC per Inter Process Comminication. Comunicazione fra macchine diverse: socket

SC per Inter Process Comminication. Comunicazione fra macchine diverse: socket SC per Inter Process Comminication Comunicazione fra macchine diverse: socket 1 Sockets File speciali utilizzati per connettere due o più processi con un canale di comunicazione i processi possono risiedere

Dettagli

IPC: InterProcess Communication

IPC: InterProcess Communication IPC: InterProcess Communication Uso di segnali Uso di file processo invia limitata quantità info (solo un tipo di segnale) e manca il mittente del segnale solo tra processi che condividono un file system

Dettagli

Sistemi Operativi. Sistemi I/O SISTEMI DI INPUT/OUTPUT. Hardware di I/O. Interfaccia di I/O per le applicazioni. Sottosistema per l I/O del kernel

Sistemi Operativi. Sistemi I/O SISTEMI DI INPUT/OUTPUT. Hardware di I/O. Interfaccia di I/O per le applicazioni. Sottosistema per l I/O del kernel SISTEMI DI INPUT/OUTPUT 10.1 Sistemi I/O Hardware di I/O Interfaccia di I/O per le applicazioni Sottosistema per l I/O del kernel Trasformazione delle richieste di I/O Stream Prestazioni 10.2 I/O Hardware

Dettagli

Modulo 10 System call per I/O avanzato

Modulo 10 System call per I/O avanzato 1 Modulo 10 Laboratorio di Sistemi Operativi I Anno Accademico 2008-2009 Copyright 2005-2007 Francesco Pedullà, Massimo Verola, Samuele Ruco Copyright 2001-2005 Renzo Davoli, Alberto Montresor (Universitá

Dettagli

Sistemi Operativi Anno Accademico 2011/2012. Segnali: Interrupt software per la gestione di eventi asincroni

Sistemi Operativi Anno Accademico 2011/2012. Segnali: Interrupt software per la gestione di eventi asincroni Anno Accademico 2011/2012 Segnali: Interrupt software per la gestione di eventi asincroni Concetto di segnale Un segnale è un interrupt software Un segnale può essere generato da un processo utente o dal

Dettagli

Processi e thread. Dipartimento di Informatica Università di Verona, Italy. Sommario

Processi e thread. Dipartimento di Informatica Università di Verona, Italy. Sommario Processi e thread Dipartimento di Informatica Università di Verona, Italy Sommario Concetto di processo Stati di un processo Operazioni e relazioni tra processi Concetto di thread Gestione dei processi

Dettagli

Esercitazione Laboratorio di Sistemi Operativi 20-01-2014. Cognome Nome Mat.

Esercitazione Laboratorio di Sistemi Operativi 20-01-2014. Cognome Nome Mat. Il compito è costituito da domande chiuse e domande aperte. Non è consentito l uso di libri, manuali, appunti., etc. Tempo massimo 2 ore. Domande chiuse: ogni domanda corrisponde ad un punteggio di 1 punto

Dettagli

Laboratorio di Reti di Calcolatori

Laboratorio di Reti di Calcolatori Laboratorio di Reti di Calcolatori Esecuzione client-server: analisi e gestione degli errori. Paolo D Arco Abstract Scopo della lezione è mostrare come analizzare l esecuzione di un client ed un server,

Dettagli

Corso di laurea in Informatica. Reti di Calcolatori A.A. 2007-2008. Prof. Roberto De Prisco LABORATORIO. Lezione

Corso di laurea in Informatica. Reti di Calcolatori A.A. 2007-2008. Prof. Roberto De Prisco LABORATORIO. Lezione Corso di laurea in Informatica Reti di Calcolatori A.A. 2007-2008 Prof. Roberto De Prisco Lezione 1 Obiettivo 2 Saper scrivere semplici programmi per la comunicazione su una rete di calcolatori Assunzione

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

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

A.1 Programma di comunicazione su porta seriale

A.1 Programma di comunicazione su porta seriale Appendice A Programmi di gestione dell apparato A.1 Programma di comunicazione su porta seriale /* INCLUDE */ #include #include #include #include #include

Dettagli

La Comunicazione tra Processi in Unix

La Comunicazione tra Processi in Unix La Comunicazione tra Processi in Unix La è un canale di comunicazione tra processi: unidirezionale: accessibile ad un estremo in lettura ed all'altro in scrittura molti-a-molti: più processi possono spedire

Dettagli

PRATICA - Lezione 1. Autunno PRATICA (Lez. 1)

PRATICA - Lezione 1. Autunno PRATICA (Lez. 1) PRATICA - Lezione! " # $ &%' ( "*)+,.-/ * "* )+ 2 3547698:47;!

Dettagli

Server Ricorsivii i. Dott. Delfina Malandrino.

Server Ricorsivii i. Dott. Delfina Malandrino. A.A. 2007/2008 Rcorsv delmal@da.unsa.t http://ss.da.unsa.t/~delmal Dpartmento d Informatca ed Applcazon R.M. Capocell Unverstà degl Stud d Salerno Iteratv Un server teratvo gestsce una sngola connessone

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

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

I Socket in PHP. Introduzione. Gestione degli errori nei socket. Funzioni socket di PHP. (manuale PHP)

I Socket in PHP. Introduzione. Gestione degli errori nei socket. Funzioni socket di PHP. (manuale PHP) I Socket in PHP (manuale PHP) Introduzione Questa estensione implementa una interfaccia a basso livello verso i socket, fornendo la possibilità di agire sia come server sia come client. Per l'utilizzo

Dettagli

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat. Esame Laboratorio di Sistemi Operativi 2-01-2008 Il compito è costituito da domande chiuse e domande aperte. Non è consentito l uso di libri, manuali, appunti., etc. Tempo massimo 1 ora. Domande chiuse:

Dettagli

Comunicazione tra processi: pipe Le pipe sono un meccanismo UNIX di Inter Process Communication (IPC)

Comunicazione tra processi: pipe Le pipe sono un meccanismo UNIX di Inter Process Communication (IPC) Comunicazione tra processi: pipe Le pipe sono un meccanismo UNIX di Inter Process Communication (IPC) Le pipe sono canali di comunicazione unidirezionali Limitazione pipe: permettono la comunicazione solo

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

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system - Complementi - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system - Università degli Studi di Brescia Prof. Massimiliano Giacomin

Dettagli

Progettazione di un client TCP. Progettazione di un server TCP. Esempio: daytime TCP. Client TCP daytime

Progettazione di un client TCP. Progettazione di un server TCP. Esempio: daytime TCP. Client TCP daytime Progettazione di un client TCP Progettazione di un server TCP Passi per la progettazione di un client TCP 1. Creazione di un endpoint Richiesta al sistema operativo 2. Creazione della connessione Implementazione

Dettagli

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione I semestre 03/04 Comunicazione tra Computer Protocolli Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea in Informatica 2

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

Progetto fine al superamento del corso di Sistemi Operativi. Http server proxy Http web monitor

Progetto fine al superamento del corso di Sistemi Operativi. Http server proxy Http web monitor Progetto fine al superamento del corso di Sistemi Operativi Http server proxy Http web monitor Sviluppato da: Santoro Carlo Maurizio Sviluppo terminato in Luglio/2006 Obiettivo: Progettare ed implementare

Dettagli

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura

Dettagli

Programmazione di applicazioni di rete

Programmazione di applicazioni di rete Programmazione di applicazioni di rete Valeria Cardellini Università di Roma Tor Vergata Applicazioni di rete Applicazioni di rete - forniscono i servizi di alto livello utilizzati dagli utenti - determinano

Dettagli

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 22 Martedì 7-1-2014 1 System Call per l'uso dei segnali Un processo che

Dettagli

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 19 - Eccezioni Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso

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

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

Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati Laboratorio di Algoritmi e Strutture Dati Docente: Camillo Fiorentini 16 ottobre 2007 1 Rappresentazioni di caratteri in C In C un carattere è una costante intera il cui valore è dato dal codice ASCII

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

Passare argomenti al programma

Passare argomenti al programma Passare argomenti al programma Quando si invoca un programma è possibile passare degli argomenti ad esso durante la chiamata. Gli argomenti ricevuti saranno stringhe (array di char) quindi l insieme di

Dettagli

HTTP adaptation layer per generico protocollo di scambio dati

HTTP adaptation layer per generico protocollo di scambio dati HTTP adaptation layer per generico protocollo di scambio dati Sandro Cavalieri Foschini 101786 Emanuele Richiardone 101790 Programmazione in Ambienti Distribuiti I - 01FQT prof. Antonio Lioy A.A. 2002-2003

Dettagli

Gestione dei processi

Gestione dei processi Gestione dei processi Dormire unsigned int sleep(unsigned int); Attende un numero specificato di secondi a meno che non si verifichi un segnale Restituisce 0 se l'attesa è terminata senza interruzioni,

Dettagli

Linguaggio C: i file

Linguaggio C: i file Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica A - GES Prof. Plebani A.A. 2006/2007 Linguaggio C: i file La presente dispensa e da utilizzarsi ai soli fini didattici previa

Dettagli

File binari e file di testo

File binari e file di testo I file File binari e file di testo distinzione tra file binari file di testo si possono usare funzioni diverse per la gestione di tipi di file diversi Programmazione Gestione dei file 2 File binari e file

Dettagli

Semafori. Semafori classici con i thread POSIX 2

Semafori. Semafori classici con i thread POSIX 2 Semafori classici Semafori I semafori sono primitive, implementate attraverso dei contatori, fornite dal sistema operativo per permettere la sincronizzazione tra processi e/o thread. Per queste primitive

Dettagli

SISTEMI DI ELABORAZIONE

SISTEMI DI ELABORAZIONE SISTEMI DI ELABORAZIONE CORSO DI LAUREA MAGISTRALE IN INGEGNERIA ELETTRONICA SPECIFICHE DI PROGETTO A.A. 2011/2012 Il progetto consiste nello sviluppo di un applicazione client/server. Client e server

Dettagli

file fisico file logico

file fisico file logico I files Un file è una struttura di dati residente su una memoria di massa (file fisico) Un programma vede un file come una sequenza di bytes (file logico) Generalizzando, un file può comprendere qualsiasi

Dettagli

Socket TCP. seconda parte

Socket TCP. seconda parte Socket TCP seconda parte Schema della connessione Computer 1 127.43.18.1 indirizzo I1 indirizzo I2 Computer 2 143.225.5.3 porta 45000 socket porta 5200 socket processo client processo server socket(...)

Dettagli

POSIX - Gestione dei Segnali. E.Mumolo, DEEI mumolo@units.it

POSIX - Gestione dei Segnali. E.Mumolo, DEEI mumolo@units.it POSIX - Gestione dei Segnali E.Mumolo, DEEI mumolo@units.it Segnali in POSIX Segnali in Posix Modalità di notifiche relative a vari eventi asincroni I signal interrompono un processo e possono o meno essere

Dettagli

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni Componenti principali Componenti e connessioni Capitolo 3 CPU (Unita Centrale di Elaborazione) Memoria Sistemi di I/O Connessioni tra loro 1 2 Architettura di Von Neumann Dati e instruzioni in memoria

Dettagli