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

Dimensione: px
Iniziare la visualizzazioe della pagina:

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

Transcript

1 Università degli studi di Salerno Laurea in Informatica a.a. 2003/04 Socket Avanzati Prof. Vincenzo Auletta 1 Timeout Abbiamo visto molte situazioni in cui è necessario fissare un su un operazione di I/O Per evitare che un applicazione si blocchi in attesa di dati che non arriveranno Ci sono tre tecniche per assegnare un ad un operazione sul socket funzione alarm() funzione select() opzioni del socket SO_RCVTIMEO e SO_SNDTIMEO Funzione alarm() Client echo UDP con alarm 2 #include <netdb.h> int alarm(unsigned int nsec); Genera un segnale SIGALRM l applicazione deve registrare un gestore per questo segnale il kernel interrompe l esecuzione della system call e chiama il gestore del segnale Il gestore restituisce il controllo all applicazione Controindicazioni L implementazione della gestione dei segnali non è standard La gestione di SIGALRM è unica in tutto il processo 3 void dg_cli_echo(file *fd, int sockd, const struct sockaddr * p_servaddr, socklen_t servlen, int ) { (1) int n; char sendline[maxline], recvline[maxline + 1]; if( signal(sigalrm, sig_) ) err_sys("errore in signal"); (2) while (fgets(sendline, MAXLINE, fd)!= NULL) { n = strlen(sendline); if( sendto(sockd, sendline, n, 0, p_servaddr, servlen)!= n ) err_sys("errore nella sendto"); alarm(); (3) if( (n = recvfrom(sockd, recvline, MAXLINE, 0, NULL, NULL)) < 0 ) if( errno == EINTR ) err_msg("socket "); (4) else err_sys("errore in recvfrom"); alarm(0); (5) recvline[n] = 0; if( fputs(recvline, stdout) == EOF ) err_sys("errore nella fputs"); 1. Prende in input il numero di secondi di 2. Registra il gestore di SIG_ALRM Il gestore non fa nulla 3. Attiva l alarm prima di leggere 4. Se recvfrom è interrotta allora è scaduto il 5. Disattiva l alarm dopo aver letto

2 4 Funzione select con La select() prende un argomento di tipo timeval Permette di registrare i numeri di secondi e microsecondi di Il si applica a tutti i descrittori controllati dalla select La select() restituisce 0 se il è scaduto e non c è nessun descrittore pronto < 0 se c è stato un errore > 0 se ci sono descrittori pronti e la struttura timeval contiene il tempo rimanente 5 Client echo UDP con select() void dg_cli_echo(file *fd, int sockd, const struct sockaddr * p_servaddr, socklen_t servlen, int ) { (1) int n; char sendline[maxline], recvline[maxline + 1]; fd_set rset; struct timeval tv; while (fgets(sendline, MAXLINE, fd)!= NULL) { /* scrive sul socket il contenuto di sendline */ FD_ZERO(&rset); FD_SET(sockd, &rset); (2) tv.tv_sec = ; (3) tv.tv_usec = 0; if( (n = select(sockd + 1, &rset, NULL, NULL, &tv)) < 0 ) (4) err_sys("errore in select"); if( n == 0 ) err_msg("socket "); (5) else /* legge dal socket e stampa su stdout */ 1. Prende in input il numero di secondi di 2. Registra il socket per la lettura 3. Setta il 4. Invoca la select 5. Se la select esce con 0 è scaduto il 6 Opzione SO_RCVTIMEO L opzione SO_RCVTIMEO fissa il sulle operazioni di lettura da un descrittore di socket Vale per tutte le operazioni di lettura da quel descrittore Utilizzabile solo per descrittori di socket Per le operazioni di scrittura si usa l opzione SO_SNDTIMEO 7 Client echo UDP con SO_RCVTIMEO void dg_cli_echo(file *fd, int sockd, const struct sockaddr * p_servaddr, socklen_t servlen, int ) { (1) int n; char sendline[maxline], recvline[maxline + 1]; struct timeval tv; tv.tv_sec = ; tv.tv_usec = 0; (2) if( (setsockopt(sockd, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv))) ) err_sys("errore in setsockopt"); (3) while (fgets(sendline, MAXLINE, fd)!= NULL) { /* scrive sul socket il contenuto di sendline */ n = recvfrom(sockd, recvline, MAXLINE, 0, NULL, NULL); if( n < 0 ) { if( errno == EWOULDBLOCK ) { (4) err_msg("socket "); continue; else err_sys("errore in recvfrom"); /* legge dal socket e stampa su stdout */ 1. Prende in input il numero di secondi di 2. fissa il valore del 3. Setta l opzione del socket 4. Se la recvfrom esce con EWOULDBLOCK è scaduto il

3 8 Funzioni recv() e send() #include <sys/socket.h> ssize_t recv(int sockd, void* buff, size_t n, int flags); ssize_t send(int sockd const void* buff, size_t n, int flags); Restituiscono -1 se errore Numero di byte letti o scritti se OK Sono analoghe a read e write ma hanno un argomento in più (flags) Analogo al quarto argomento di sendto e recvfrom Definisce il comportamento della system call La variabile flags può essere usata soltanto per passare informazioni dal processo al kernel 9 Flag La variabile flags può contenere l OR logico di alcuni di questi valori MSG_DONTROUTE MSG_DONTWAIT MSG_OOB MSG_PEEK MSG_WAITALL Non legge la tabella di routing prima di spedire Operazione di lettura o scrittura eseguita in modalità non blocking Legge o invia dati fuori banda Legge i dati dal socket senza estrarli dal buffer Aspetta che tutti i dati siano pronti prima di leggere (come readn) Funzioni readv() e writev() Struttura iovec 10 #include <sys/uio.h> ssize_t readv(int fd, const struct iovec* iov, int iovcount); ssize_t writev(int fd, const struct iovec* iov, int iovcount); Restituiscono -1 se errore Numero di byte letti o scritti se OK Sono analoghe a read e write ma consentono di operare su più buffer contemporaneamente scattering (distribuzione) e gathering (raccolta) Utilizzate per evitare di inviare tanti piccoli pacchetti Con socket UDP una writev crea un unico datagram iov è un array di strutture iovec di lunghezza al più IOV_MAX Ogni struttura specifica un buffer 11 struct iovec { void* ; /* indirizzo di partenza del buffer */ int iov_len; /* lunghezza del buffer */ ; iov_len 100 Es. una readv legge 180 caratteri

4 12 Funzioni recvmsg() e sendmsg() #include <sys/socket.h> ssize_t recvmsg(int sockd, struct msghdr* msg, int flags); ssize_t sendmsg(int sockd, struct msghdr* msg, int flags); Restituiscono -1 se errore numero di byte letti o scritti se OK Sono le funzioni di I/O più generali Tutte le altre funzioni di I/O sono casi particolari di queste due Supportano Flags Lettura e scrittura da più buffer Specifica dell indirizzo Passaggio di dati ausiliari (ancillary data) Struttura msghdr struct msghdr { void* msg_name; /* indirizzo del socket */ socklen_t msg_namelen; /* lunghezza dell indirizzo */ struct iovec* msg_iov; /* array di buffer */ size_t msg_iovlen; /* lunghezza di msg_iov */ void* msg_control; /* dati ausiliari */ socklen_t msg_controllen; /* lunghezza di msg_control */ int msg_flags; /* flag restituiti da recvmsg() */ ; L argomento flags è usato solo da sendmsg() per passare flags al kernel Stessi valori di recv() msg_flags è usato solo da recvmsg() per contenere i flag ricevuti dal kernel 13 Restituisce anche MSG_BCAST, MSG_MCAST, MSG_TRUNC (messaggio troncato), MSG_CTRUNC (dati ausiliari troncati) 14 Dati Ausiliari I dati ausiliari possono essere passati o ricevuti solo utilizzando sendmsg() e recvmsg() Usati per passare informazioni da un protocollo ad un altro Es. opzioni IP_RECVSTDADDR, IP_RECVIF Passare informazioni dal processo figlio al processo padre o tra processi indipendenti (socket UNIX) Il campo msg_control è formattato come un insieme di oggetti di dati (ancillary data object) Oggetti distinti possono avere differenti lunghezze Per manipolare gli oggetti si usano macro ad hoc Ogni oggetto inizia con una struct cmsghdr 15 Struttura cmsghdr struct msghdr { socklen_t cmsg_len; /* lunghezza di un blocco */ struct iovec* cmsg_level; /* protocollo che ha prodotto i dati */ size_t cmsg_type; /* specifico del protocollo */ unsigned char cmsg_data[]; ; I dati devono essere allineati con la struct msghdr Ci possono essere caratteri di riempimento tra cmsg_type e cmsg_data

5 16 Operazioni su Dati Ausiliari #include <sys/socket.h> struct cmsghdr* CMSG_FIRSTHDR(struct msghdr* mhdrptr); /* restituisce il puntatore al primo blocco o NULL */ struct cmsghdr* CMSG_NXTHDR(struct msghdr* mhdrptr, struct cmsghdr* cmsgptr); /* restituisce il puntatore al prossimo blocco o NULL */ unsigned char* CMSG_DATA(struct cmsghdr* cmsgptr); /* restituisce un puntatore al primo byte di cmsg_data */ unsigned int CMSG_LEN(unsigned int length); /* restituisce il valore di cmsg_len */ unsigned int CMSG_SPACE(unsigned int length); /* restituisce la dimensione complessiva di un oggetto */ 17 Esempio Chiama recvmsg() su un socket UDP con opzione IP_RECVSTDADDR settata per ricevere un datagram di 170 byte inviato da :2000 all indirizzo msg_name msg_namelen 16 msg_iov msg_iovlen 3 msg_control msg_controllen20 msg_flags 0 msghdr iovec iov_len Esempio Contenuto della struttura restituita da recvmsg() msg_name msg_namelen 16 msg_iov msg_iovlen 3 msg_control msg_controllen16 msg_flags 0 msghdr sockaddr_in 16, AF_INET, cmsghdr cmsg_len cmsg_level cmsg_type iovec iov_len IPPROTO_IP IP_RECVSTDADDR Socket UNIX E un socket associato ad un file L indirizzo del socket è un path nel file system locale Consentono di realizzare comunicazione tra processi dello stesso host usando l API dei socket È molto più efficiente di un normale socket TCP Utilizzato per passare descrittori tra due processi (es. dal figlio al padre) struct sockaddr_un { uint8_t sun_len; sa_family_t sun_family; /* AF_LOCAL */ char sun_path[104]; ; sun_path contiene una stringa di lunghezza variabile la macro SUN_LEN calcola la launghezza del pathname

6 20 Funzioni su socket UNIX Alcune funzioni dell API hanno un comportamento differente quando usate su socket UNIX La bind deve essere effettuata su un pathname assoluto il file non deve essere associato ad altri descrittori La connect deve essere effettuata su un pathname associato ad un socket UNIX dello stesso tipo Il controllo dei permessi effettuato dalla connect è analogo a quello della open di un file 21 Client TCP con Socket UNIX int main(int argc, char **argv) { int sockd; struct sockaddr_un servaddr; if (argc!= 2) err_quit("utilizzo: echo_client <pathname>"); if ( (sockd = socket(af_local, SOCK_STREAM, 0)) < 0) (1) err_sys("errore in socket"); bzero(&servaddr, sizeof(servaddr)); servaddr.sun_family = AF_LOCAL; (2) strcpy(servaddr.sun_path, argv[1]); if (connect(sockd, (SA *) &servaddr, sizeof(servaddr)) < 0) err_sys("errore nella connect"); str_client(stdin, sockd); exit(0); 1.Crea un socket UNIX 2.Riempie la struttura sockaddr_un Server TCP con Socket UNIX 1 Server TCP con Socket UNIX 2 int main(int argc, char **argv) { int listend, connd; struct sockaddr_un servaddr, cliaddr; socklen_t clilen; pid_t pid; if( argc!= 2 ) err_quit("utilizzo: echo_server <pathname>"); if( (listend = socket(af_local, SOCK_STREAM, 0)) < 0) (1) err_sys("errore in socket"); unlink(argv[1]); (2) bzero(&servaddr, sizeof(servaddr)); servaddr.sun_family = AF_LOCAL; strcpy(servaddr.sun_path, argv[1]); (3) /* esegue bind(), listen() e signal() */ 1. Crea un socket UNIX 2. Scollega il pathname 3. Riempie la struttura sockaddr_un for ( ; ; ) { /* esegue la accept */ if( (pid = fork()) == 0 ) { /* chiude il socket di ascolto */ str_srv_echo(connd); exit(0); /* chiude il socket di connessione */ 22 23

7 24 Passaggio dei Descrittori UNIX consente il passaggio di descrittori tra due processi indipendenti Il processo A crea un descrittore Passa il descrittore al processo B Il processo B utilizza il descrittore I descrittori di A e B possono avere valori differenti ma sono associati alla stessa risorsa Il valore del descrittore ha significato solo locale al processo La conversione è fatta automaticamente dal kernel Il passaggio dei descrittori è effettuato utilizzando il passaggio di dati ausiliari su un socket UNIX 25 Utilizzo del Passaggio di Descrittori Utilizzato in server TCP ricorsivi per consentire la comunicazione padre-figlio dopo che è stata effettuata la fork() Es. i web server utilizzano la tecnica del preforking per ottimizzare i tempi di risposta All avvio il server genera un certo numero di figli Ogni volta che il server riceve una richiesta di connessione crea un socket di connessione e lo passa ad un figlio libero (con sendmsg) I processi figlio inattivi sono bloccati su una recvmsg in attesa di ricevere il descrittore del socket di connessione Esempio Applicazione mycat 26 L applicazione mycat legge da linea di comando il nome di un file e ne stampa su stdout il contenuto Per aprire il file invoca la funzione myopen La funzione myopen utilizza la fork(): il processo figlio apre il file e passa il descrittore al padre; il padre passa il descrittore alla mycat La comunicazione tra processo figlio e processo padre di myopen avviene attraverso un socket UNIX 27 int main(int argc, char **argv) { int fd, n; char buff[buffsize]; if (argc!= 2) err_quit("utilizzo: mycat <pathname>"); if ( (fd = my_open(argv[1], O_RDONLY)) < 0) (1) err_sys("non è possibile aprire il file %s", argv[1]); while ( (n = read(fd, buff, BUFFSIZE)) > 0) (2) if( write(fileno(stdout), buff, n)!= n ) err_sys("errore in write"); exit(0); 1.Chiama la myopen per aprire il file 2.Stampa una riga per volta

8 28 Funzione myopen 1 int my_open(const char *pathname, int mode) { int fd, sockfd[2], status; pid_t childpid; char c; if( socketpair(af_local, SOCK_STREAM, 0, sockfd) < 0 ) (1) err_sys("errore in socketpair"); if ( (childpid = fork()) == 0) { /* child process */ if( close(sockfd[0]) < 0 ) err_sys("errore in close"); if( (fd = open(pathname, O_RDONLY)) < 0 ) err_sys("errore in open"); (2) if( write_fd(sockfd[1], "", 1, fd) < 0 ) err_quit("errore in write_fd"); (3) if( close(sockfd[1]) < 0 ) err_sys("errore in close"); exit(0); 1. Crea una stream pipe 2. Il processo figlio apre il file 3. Chiama la funzione write_fd per passare il descrittore al padre 29 Funzione myopen 2 if( close(sockfd[1]) < 0 ) err_sys("errore in close"); if( waitpid(childpid, &status, 0) == -1 ) err_sys("errore in waitpid"); (4) if (WIFEXITED(status) == 0) err_quit("child non terminato"); if ( (status = WEXITSTATUS(status)) == 0) read_fd(sockfd[0], &c, 1, &fd); (5) else { errno = status; fd = -1; if( close(sockfd[0]) < 0 ) err_sys("errore in close"); return(fd); (6 4. Il processo padre aspetta che il figlio termini 5. Se il figlio è terminato correttamente chiama la read_fd per leggere il descrittore del file 6. Restituisce il descrittore al programma principale 30 Funzione write_fd ssize_t write_fd(int fd, void *ptr, size_t nbytes, int sendfd) { int n; struct msghdr msg; struct iovec iov[1]; union { struct cmsghdr cm; char control[cmsg_space(sizeof(int))]; control_un; struct cmsghdr *cmptr; msg.msg_control = control_un.control; msg.msg_controllen = sizeof(control_un.control); cmptr = CMSG_FIRSTHDR(&msg); cmptr->cmsg_len = CMSG_LEN(sizeof(int)); cmptr->cmsg_level = SOL_SOCKET; cmptr->cmsg_type = SCM_RIGHTS; *((int *) CMSG_DATA(cmptr)) = sendfd; msg.msg_name = NULL; msg.msg_namelen = 0; iov[0]. = ptr; iov[0].iov_len = nbytes; msg.msg_iov = iov; msg.msg_iovlen = 1; return(sendmsg(fd, &msg, 0)); 31 Funzione read_fd ssize_t read_fd(int fd, void *ptr, size_t nbytes, int *recvfd) { struct msghdr msg; struct iovec iov[1]; ssize_t n; int newfd; union { struct cmsghdr cm; char control[cmsg_space(sizeof(int))]; control_un; struct cmsghdr *cmptr; msg.msg_control = control_un.control; msg.msg_controllen = sizeof(control_un.control); msg.msg_name = NULL; msg.msg_namelen = 0; iov[0]. = ptr; iov[0].iov_len = nbytes; msg.msg_iov = iov; msg.msg_iovlen = 1; if ( (n = recvmsg(fd, &msg, 0)) <= 0) return(n); if ( (cmptr = CMSG_FIRSTHDR(&msg))!= NULL && cmptr->cmsg_len == CMSG_LEN(sizeof(int))) { if (cmptr->cmsg_level!= SOL_SOCKET) err_quit("control level!= SOL_SOCKET"); if (cmptr->cmsg_type!= SCM_RIGHTS) err_quit("control type!= SCM_RIGHTS"); *recvfd = *((int *) CMSG_DATA(cmptr)); else *recvfd = -1; return(n);

9 32 Socket non Bloccanti Per default i socket sono bloccanti Le operazioni sul socket si bloccano fino a quando non hanno un risultato da restituire Operazioni bloccanti: read, write, connect, accept E possibile specificare che il socket deve operare in modo non bloccante (usa fcntl o ioctl) o che una singola operazione deve essere effettuata in modo non bloccante (usa i flags) L implementazione di un client o di un server non bloccante è più complessa Bisogna gestire l eventuale assenza di dati Conviene creare due processi: uno solo per leggere dal socket e l altro solo per scrivere 33 Funzione fcntl() #include <fcntl.h> int fcntl(int fd, int cmd, ); modifica il comportamento di un descrittore Modalità non bloccante (O_NONBLOCK) Modalità signal-driven (O_ASYNC) Legge o modifica il proprietario del descrittore (F_GETOWN, F_SETOWN) Legge o modifica i flag del descrittore (F_GETFL, F_SETFL) Per rendere un socket non bloccante int flags; if( (flags = fcntl(fd, F_GETFL, 0)) < 0 ) err_sys( errore F_GETFL ); flags = O_NONBLOCK; if( fcntl(fd, F_SETFL, flags) ) < 0 ) err_sys( errore F_SETFL );

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

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

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 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 [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

Le Opzioni per i Socket

Le Opzioni per i Socket Advanced TCP Socket Le Opzioni per i Socket Le opzioni per i socket sono controllate mediante tre tipi di primitive: 1) le funzioni getsockopt() e setsockopt(), che permettono di configurare alcune caratteristiche

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

File I/O. M. R. Guarracino: File I/O 1

File I/O. M. R. Guarracino: File I/O 1 File I/O M. R. Guarracino: File I/O 1 File I/O Gran parte delle operazioni su file in ambiente UNIX possono essere eseguite utilizzando solo cinque funzioni: open read write lseek close M. R. Guarracino:

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

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

Program m azione di Sistem a 6

Program m azione di Sistem a 6 Program m azione di Sistem a 6 Lucidi per il corso di Laboratorio di Sistemi Operativi tenuto da Paolo Baldan presso l'università Ca' Foscari di Venezia, anno accademico 2004/ 2005. Parte di questo materiale

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

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

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

rsystem Maximiliano Marchesi maximiliano.marchesi@studenti.unipr.it

rsystem Maximiliano Marchesi maximiliano.marchesi@studenti.unipr.it Maximiliano Marchesi 28 Settembre 2005 Diario delle Revisioni Revisione 1.2 28 Settembre 2005 maximiliano.marchesi@studenti.unipr.it Sommario Introduzione..................................................................................

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 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

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

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

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

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

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

Inter-process communication: socket

Inter-process communication: socket Le Socket Inter-process communication: socket Abbiamo visti alcune tipologie di Inter-process communication: Anonymous pipes FIFOs o named pipes Le socket di comunicazione si pongono nell'ipc per realizzare:

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

IPC System V. Code di messaggi

IPC System V. Code di messaggi IPC System V Code di messaggi Panoramica coda di messaggi una lista concatenata di messaggi, FIFO semaforo un contatore condiviso, atomicamente modificabile memoria condivisa uno spazio di memoria accessibile

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

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

Esercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/2012. - Comunicazione Tra Processi (IPC)- - 1 Parte - Esercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/2012 - Comunicazione Tra Processi (IPC)- - 1 Parte - 1 Sommario Comunicazione tra processi sulla stessa macchina: fifo (qualunque insieme di processi)

Dettagli

Digressione: man 2...

Digressione: man 2... Syscall File I/O Digressione: man 2... Le funzioni della libreria standard UNIX associate alle system call di Linux sono documentate nella sezione 2 di man e.g.: man 2 open Ogni manpage di system call

Dettagli

Opzioni per le Socket

Opzioni per le Socket Opzioni per le Socket A.A. 2005/06 Opzioni per le Socket Ogni socket aperto ha delle proprietà che ne determinano alcuni comportamenti Le opzioni del socket consentono di modificare tali proprietà Ogni

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

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

INGEGNERIA DEL WEB. VinX

INGEGNERIA DEL WEB. VinX INGEGNERIA DEL WEB VinX Indice 1 Programmazione di applicazioni di rete 1 1.1 Applicazioni di rete........................................ 1 1.2 Modello Client/Server......................................

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

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

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

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

Uso di sniffer ed intercettazione del traffico IP

Uso di sniffer ed intercettazione del traffico IP Uso di sniffer ed intercettazione del traffico IP Massimo Bernaschi Istituto per le Applicazioni del Calcolo Mauro Picone Consiglio Nazionale delle Ricerche Viale del Policlinico, 137-00161 Rome - Italy

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

Laboratorio di Reti di Calcolatori

Laboratorio di Reti di Calcolatori Laboratorio di Reti di Calcolatori Comunicazione tra processi in una interrete, Socket API. Paolo D Arco Abstract Scopo della lezione è spiegare concisamente come possono comunicare due processi in esecuzione

Dettagli

Avviso ai programmatori. Programmazione in rete: i socket. Esercizio - copia dati. Messaggi di errore. stdarg.h. Funzioni di errore

Avviso ai programmatori. Programmazione in rete: i socket. Esercizio - copia dati. Messaggi di errore. stdarg.h. Funzioni di errore Programmazione in rete: i socket Antonio Lioy < lioy@polito.it > Politecnico di Torino Dip. Automatica e Informatica Avviso ai programmatori la programmazione di rete è pericolosamente vicina al kernel

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

Digressione: man (2)...

Digressione: man (2)... Syscall File I/O Digressione: man (2)... Le funzioni della libreria standard UNIX associate alle system call di Linux sono documentate nella sezione 2 di man e.g.: man 2 open Ogni manpage di system call

Dettagli

Guida all' uso dei sockets nella programmazione in C

Guida all' uso dei sockets nella programmazione in C Guida all' uso dei sockets nella programmazione in C ( pseudo-traduzione personalizzata di "Beej's Guide to Network Programming" ) (Prima parte) INTRODUZIONE Finalmente ho trovato una guida chiara e semplice

Dettagli

Una socket è un punto estremo di un canale di comunicazione accessibile mediante un file descriptor. Alcuni tipi predefiniti di socket

Una socket è un punto estremo di un canale di comunicazione accessibile mediante un file descriptor. Alcuni tipi predefiniti di socket Una socket è un punto estremo di un canale di comunicazione accessibile mediante un file descriptor Le socket costituiscono un fondamentale strumento di comunicazione, basato sullo scambio di messaggi,

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

Il modello Client/Server. La comunicazione

Il modello Client/Server. La comunicazione Il modello Client/Server La comunicazione Se sintetizziamo uno scenario completo possiamo identificare diverse interfacce di comun icazione: Interfaccia di comuncazione: insieme delle API necessarie alla

Dettagli

Interprocess Communications - II. Franco Maria Nardini

Interprocess Communications - II. Franco Maria Nardini Interprocess Communications - II Franco Maria Nardini XSI IPC Tre tipi di IPC introdotti da System V: semafori shared memory code di messaggi Comunicazioni tra processi su stesso host Tutte consentono

Dettagli

Chiamate di sistema per la Inter Process Communication (IPC) in POSIX. E.Mumolo, DEEI mumolo@units.it

Chiamate di sistema per la Inter Process Communication (IPC) in POSIX. E.Mumolo, DEEI mumolo@units.it Chiamate di sistema per la Inter Process Communication (IPC) in POSIX E.Mumolo, DEEI mumolo@units.it Pipe Cos'è un pipe? E' un canale di comunicazione che unisce due processi Caratteristiche: La più vecchia

Dettagli

programmazione distribuita Introduzione Introduzione alla programmazione distribuita

programmazione distribuita Introduzione Introduzione alla programmazione distribuita Reti Informatiche Introduzione alla programmazione distribuita Introduzione Richiami di Programmazione C Differenze principali C/C++ 2 1 Definizioni di variabili Le variabili possono essere definite solo

Dettagli

IL CONCETTO DI FILE. È illecito operare oltre la fine del file.

IL CONCETTO DI FILE. È illecito operare oltre la fine del file. IL CONCETTO DI FILE Un file è una astrazione fornita dal sistema operativo, il cui scopo è consentire la memorizzazione di informazioni su memoria di massa. Concettualmente, un file è una sequenza di registrazioni

Dettagli

Applicazione distribuita

Applicazione distribuita La programmazione di applicazioni distribuite in C Il concetto di applicazione distribuita L architettura di una applicazione distribuita Il paradigma a scambio di messaggi Il paradigma client-server Il

Dettagli

La sincronizzazione è legata alla implementazione delle pipe: int pipe(int fd[2]);

La sincronizzazione è legata alla implementazione delle pipe: int pipe(int fd[2]); int pipe(int fd[2]); Le pipe sono canali di comunicazione unidirezionali che costituiscono un primo strumento di comunicazione (con diverse limitazioni), basato sullo scambio di messaggi, tra processi

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

Sulla libreria standard, III. Manipolare file con stdio.h

Sulla libreria standard, III. Manipolare file con stdio.h Sulla libreria standard, III Manipolare file con stdio.h 1 Libreria per input/output Con libreria si intende una collezione di sottoprogrammi che vengono utilizzati per lo sviluppo di software non eseguibili,

Dettagli

CREAZIONE DI UN FILE

CREAZIONE DI UN FILE #include #include CREAZIONE DI UN FILE fd = creat(filename, mode); int fd, mode; char *filename; La primitiva creat crea un file, se non ne esiste uno col nome specificato, oppure

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

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

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

Scrivere alla fine di un file Vi sono due modi per scrivere alla fine di un file:

Scrivere alla fine di un file Vi sono due modi per scrivere alla fine di un file: Scrivere alla fine di un file Vi sono due modi per scrivere alla fine di un file: usare lseek per spostarsi alla fine del file e poi scrivere: lseek(filedes, (off_t)0, SEEK_END); write(filedes, buf, BUFSIZE);

Dettagli

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3. 1 strace : visualizzazione delle system call invocate da un processo

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3. 1 strace : visualizzazione delle system call invocate da un processo UNIVERSITÀ DEGLI STUDI DI PARMA Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica a.a. 2005-2006 CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3 1 strace : visualizzazione delle system call

Dettagli

Quinta Esercitazione. Principali primitive di accesso ai File

Quinta Esercitazione. Principali primitive di accesso ai File Esempio: processi padre e figlio condividono di file aperti PRIMA della creazione Quinta Esercitazione Gestione File-System Segnali processo padre fork() Sistema tabella dei file attivi i-node Eugenio

Dettagli

Precedenza e associatività. Complementi sul C - 2. Esempi. Esempi

Precedenza e associatività. Complementi sul C - 2. Esempi. Esempi Complementi sul C - 2 Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C Precedenza e associatività () [] ->. S D! ~ ++ + * & (cast ) sizeof S D * / % S D + - (somma e sottrazione) S D >

Dettagli

Esercitazione sulle Socket

Esercitazione sulle Socket Esercitazione sulle Socket Sommario Echo Server Specifica Descrizione programma (TCP Socket) Client UNIX/WIN Server UNIX/WIN Server multithread UNIX/WIN Descrizione programma (UDP Socket) 2 Interazione

Dettagli

Lab. di Sistemi Operativi - Esercitazione n 9- -Thread-

Lab. di Sistemi Operativi - Esercitazione n 9- -Thread- Lab. di Sistemi Operativi - Esercitazione n 9- -Thread- 1 Sommario Esercizi su: Comunicazione tra processi: la funzione pipe() Condivisione dati e codice tra due o più processi: concetto di Thread 2 -

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

Esercizio sulla gestione di file in Unix

Esercizio sulla gestione di file in Unix Esercizio sulla gestione di file in Unix 1 Esercizio Si vuole realizzare un programma C che, utilizzando le system call di Unix, realizzi uno schema di comunicazione tra due processi (padre e figlio) mediante

Dettagli

Programmazione dei socket di rete in GNU/Linux

Programmazione dei socket di rete in GNU/Linux Programmazione dei socket di rete in GNU/Linux Fulvio Ferroni fulvioferroni@teletu.it 2006.09.21 Copyright Fulvio Ferroni fulvioferroni@teletu.it Via Longarone, 6-31030 - Casier (TV) Le informazioni contenute

Dettagli

Processi e Sincronizzazione. Laboratorio Software 2008-2009 C. Brandolese M. Grotto

Processi e Sincronizzazione. Laboratorio Software 2008-2009 C. Brandolese M. Grotto Processi e Sincronizzazione C. Brandolese M. Grotto Sommario 1. Processi Concetti fondamentali Stati in GNU/Linux 2. Creazione Descrizione Creazione con system() Creazione con fork() Effetto di fork()

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

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 6

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 6 UNIVERSITÀ DEGLI STUDI DI PARMA Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica, Elettronica e delle Telecomunicazioni a.a. 2005-2006 CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 6 1 Socket

Dettagli

Corso di Programmazione Concorrente Processi. Valter Crescenzi

Corso di Programmazione Concorrente Processi. Valter Crescenzi Corso di Programmazione Concorrente Processi Valter Crescenzi http://crescenzi.inf.uniroma3.it Sommario Processi vs Thread Creazione e terminazione di processi chiamata di sistema fork() chiamata di sistema

Dettagli

I/O Multiplexing select() e poll()

I/O Multiplexing select() e poll() I/O Multiplexing select() e pll() Crs di laurea in Infrmatica Labratri di Reti di Calclatri A.A. 2013-2014 Simne Bassis bassis@di.unimi.it Labratri di Reti di Calclatri (Infrmatica) - A.A. 2013-2014 Università

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

T.A.R.I. Socket (ICT, AL)

T.A.R.I. Socket (ICT, AL) Internet Applications (Client-Server Concept, Use of Protocol Ports, Socket API, DNS, E-mail, TELNET, FTP) Funzionalità Livello di trasporto e livelli sottostanti Comunicazione base Disponibilità Livello

Dettagli

Introduzione ai Device Drivers in Linux. E.Mumolo, DEEI mumolo@units.it

Introduzione ai Device Drivers in Linux. E.Mumolo, DEEI mumolo@units.it Introduzione ai Device Drivers in Linux E.Mumolo, DEEI mumolo@units.it 1 Device Drivers Moduli software che gestiscono le periferiche attraverso il file system Tutte le periferiche sono viste come file

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

ESERCIZI RISOLTI IN C LANGUAGE (programmazione avanzata)

ESERCIZI RISOLTI IN C LANGUAGE (programmazione avanzata) ESERCIZI RISOLTI IN C LANGUAGE (programmazione avanzata) 1. Gestione file a basso livello 1) Scrivere un programma che carichi in un file binario, gestito a basso livello, una serie di numeri interi contenuti

Dettagli

Laboratorio di Sistemi Operativi

Laboratorio di Sistemi Operativi primavera 2009 pipe vs fifo la pipe può essere usata solo tra processi "imparentati" (che hanno un antenato comune che ha creato la pipe) Le FIFO la fifo consente di scambiare dati tra processi qualsiasi

Dettagli

System call fcntl e record locking

System call fcntl e record locking System call fcntl e record locking Esempio: prenotazione di voli aerei La compagnia ACME Airlines usa un sistema di prenotazione dei voli basato su unix. Possiede due uffici per la prenotazione, A e B,

Dettagli

ESERCIZI SULLA PROGRAMMAZIONE DI SISTEMA GNU/LINUX

ESERCIZI SULLA PROGRAMMAZIONE DI SISTEMA GNU/LINUX Autore: Classe: Luciano VIVIANI QUARTA INFORMATICA (4IB) Anno scolastico: 2004/2005 Scuola: Itis Euganeo ESERCIZI SULLA PROGRAMMAZIONE DI SISTEMA GNU/LINUX Questa dispensa non vuole essere un manuale di

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

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3 UNIVERSITÀ DEGLI STUDI DI PARMA Facoltà di Ingegneria Corso di Laurea in Ingegneria Elettronica-Informatica-Telecomunicazioni a.a. 2001-2002 CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3 1 Trasferimento

Dettagli

POSIX Systems Programming. geek evening 0x0d. ambienti POSIX. By lord_dex ZEI e Salug! presentano:

POSIX Systems Programming. geek evening 0x0d. ambienti POSIX. By lord_dex ZEI e Salug! presentano: POSIX Systems Programming Syscall e fondamenti della ambienti POSIX programmazione in By lord_dex f.apollonio@salug.it ZEI e Salug! presentano: geek evening 0x0d INDICE Processi e Thread Creazione ed utilizzo

Dettagli