Inter-process communication: socket

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Inter-process communication: socket"

Transcript

1 Le Socket

2 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: Comunicazioni tra processi sulla stessa macchina Comunicazioni tra processi sparsi nella rete Caratteristiche Si basano su file speciali Garantiscono connessioni affidabili e non Più complesse da realizzare, es. open() sfrutta più system call 2

3 Socket Originariamente sviluppate da BSD ma adottate in tutte le famiglie Unix. Lo scopo creare IPC trasparenti capaci di sfruttare diversi protocolli. Paradigma client-server Il server crea un socket il cui nome è noto. Il client comunica con il server tramite una connessione al suo socket. Se la connessione ha successo si hanno due descrittori Uno per il client per inviare/ricevere le informazioni Uno per il server per ricevere/inviare le informazioni Ad ogni connessione, il server può reagire: In modo sequenziale (è lui che comunica direttamente) In maniera concorrente (crea un figlio che la gestisca) 3

4 Socket La creazione di una socket non è un operazione atomica. Server socket() /* istanzia la socket */ bind() /* setta il nome (sarà noto) della socket */ listen() /* ascolta la coda delle connessioni */ accept() /* gestisce la prossima connessione */ Client socket() /* istanzia la socket */ connect() /* connette ad un server per mezzo del nome */ Istanziare una socket il kernel alloca il file speciale per lo scambio dei dati. Si definisce il tipo di connessione: affidabile o non affidabile 4

5 Socket: schema generale 5

6 Socket: come collegare due processi - Server Passo 1: creare un file ricevitore (socket) ottenendo il file descriptor Il sistema crea la socket a cui è possibile riferirsi con il descrittore sdf 6

7 Socket: come collegare due processi - Server Passo 1: creare un file ricevitore (socket) ottenendo il file descriptor Passo 2: associare al socket un indirizzo di tipo: AF_UNIX, AF_INET mysocket rappresenta il nome che dovrà essere noto per connettersi Dipende dal dominio di connessione (ce ne sono altri): AF_UNIX: per connessioni tra processi sulla stessa macchina AF_INET: per connessioni tra processi sparsi in rete 7

8 Socket: come collegare due processi - Server Passo 1: creare un file ricevitore (socket) ottenendo il file descriptor Passo 2: associare al socket un indirizzo di tipo: AF_UNIX, AF_INET Passo 3: specificare che siamo disposti ad accettare connessioni 8

9 Socket: come collegare due processi - Server Passo 1: creare un file ricevitore (socket) ottenendo il file descriptor Passo 2: associare al socket un indirizzo di tipo: AF_UNIX, AF_INET Passo 3: specificare che siamo disposti ad accettare connessioni Passo 4. bloccarsi in attesa di connessioni da parte di altri processi Da questo momento il server si mette in ascolto delle connessioni in entrata (il processo viene sospeso) 9

10 Socket: come collegare due processi - Client Passo 1: creare un file ricevitore (socket) ottenendo il file descriptor 10

11 Socket: come collegare due processi - Client Passo 1: creare un file ricevitore (socket) ottenendo il file descriptor Passo 2: collegarsi al socket del server Il nome deve essere quello utilizzato nella chiamata bind() del server 11

12 Socket: come collegare due processi - Client Passo 1: creare un file ricevitore (socket) ottenendo il file descriptor Passo 2: collegarsi al socket del server Il nome deve essere quello utilizzato nella chiamata bind() del server Avviene il match fra accept/connect ed un nuovo socket viene creato 12

13 Socket: come collegare due processi - Server accept ritorna al server il descrittore del nuovo socket usabile per il resto della comunicazione con il client 13

14 Socket: come collegare due processi - Server accept ritorna al server il descrittore del nuovo socket usabile per il resto della comunicazione con il client il server si può rimettere in attesa di connessioni da altri client con un altra accept 14

15 Socket - creazione Dominio - indica dove risiedono il server ed il client. Alcuni: AF_UNIX: client e server sono sulla stessa macchina AF_INET: client e server sono ovunque in Internet Tipo - determina il tipo di comunicazione server/client. Due principali: SOCK_STREAM: affidabile, preserva l'ordine di invio dei dati, basata su stream di byte di lunghezza variabile SOCK_DGRAM: inaffidabile, senza una connessione fissa, basata su messaggi di lunghezza variabile Protocollo - specifica le regole di scambio messaggi. Caratteristiche: protocolli datagram, come UDP, che non sono affidabili protocolli stream, come TCP/IP, che assicurano la ricezione dei dati preservandone l'ordine 15

16 Socket system call sys/types.h sys/socket.h /* per socket() */ sys/un.h /* per dominio AF_UNIX */ netinet/in.h arpa/inet.h netdb.h /* per dominio AF_INET */ int socket (int domain, int type, int protocol) domain specifica il dominio (AF_UNIX, AF_INET, etc.) type specifica il tipo di comunicazione(sock_stream, SOCK_DGRAM) protocol specifica il protocollo da utilizzare Tipicamente 0 per indicare che si vuole utilizzare il protocollo di default per la coppia domain/type in questione Ritorno restituisce un descrittore di file associato al nuovo socket -1 se si è verificato un errore 16

17 Socket - esempio Comunicazione via socket AF_UNIX (tralasciamo gestione errori) #include <sys/un.h> /* ind AF_UNIX */ #define SOCKNAME./mysock int main (void){ int fd_skt, fd_c; struct sockaddr_un sa; /* indirizzo AF_UNIX */ // creazione indirizzo strcpy(sa.sun_path, SOCKNAME); sa.sun_family = AF_UNIX; /* segue*/ } sockaddr_un è la struttura utilizzata in fase di bind. La sua definizione è: struct sockaddr_un { unsigned short sun_family; /* AF_UNIX */ char sun_path[108]; } 17

18 Socket esempio di creazione server/client E' possibile creare nello stesso file sia il client che il server int main (void){ int fd_skt, fd_c; struct sockaddr_un sa; /* ind AF_UNIX */ strcpy(sa.sun_path, SOCKNAME); sa.sun_family = AF_UNIX; if (fork()!=0) { /* padre, server */ fd_skt = socket(af_unix,sock_stream,0); /* segue */ }else { /* figlio, client */ fd_skt = socket(af_unix,sock_stream,0); /* segue */ } } 18

19 Socket system call bind() int bind (int sock_fd, const struct sockaddr *sa, socklen_t sa_len) Caratteristiche associa alla socket con descrittore sock_fd uno specifico indirizzo, puntato da sa, di lunghezza sa_len Tipicamente con AF_UNIX si deve indicare un file che non esiste sa_len è passato come sizeof (struct sockaddr) Ritorno 0 in caso di successo -1 errore con errno settato 19

20 Socket esempio di creazione server/client Aggiungiamo la chiamata a bind int main (void){ int fd_skt, fd_c; struct sockaddr_un sa; /* ind AF_UNIX */ strcpy(sa.sun_path, SOCKNAME); sa.sun_family = AF_UNIX; if (fork()!=0) { /* padre, server */ fd_skt = socket(af_unix,sock_stream,0); bind(fd_skt, (struct sockaddr *) &sa, sizeof(sa)); /* segue */ }else{ /* figlio, client */ fd_skt = socket(af_unix,sock_stream,0); /* segue */ } } 20

21 Socket system call listen() int listen(int sockfd, int backlog) Caratteristiche usata da un server connection-oriented per indicare che desidera ricevere connessioni sulla socket locale sockfd backlog indica il numero massimo di richieste di connessioni che possono essere messe in coda. In genere si utilizza SOMAXCONN definito in sys/socket.h Ritorno 0 in caso di successo -1 errore con errno settato 21

22 Socket esempio di creazione server/client Aggiungiamo la chiamata a listen int main (void){ int fd_skt, fd_c; struct sockaddr_un sa; /* ind AF_UNIX */ strcpy(sa.sun_path, SOCKNAME); sa.sun_family = AF_UNIX; if (fork()!=0) { /* padre, server */ fd_skt = socket(af_unix,sock_stream,0); bind(fd_skt, (struct sockaddr *) &sa, sizeof(sa)); listen(fd_skt,somaxconn) /* segue */ }else{ /* figlio, client */ /* segue */ } } 22

23 Socket system call accept() int accept (int sock_fd, const struct sockaddr * sa, socklen_t *sa_len); Caratteristiche usata per attendere una richiesta di connessione sul socket sock_fd rimuove la richiesta dalla coda e carica l'indirizzo del client in sa e la sua lunghezza in sa_len se non esistono richieste di connessione pendenti, il processo è sospeso Ritorno un'altra socket descriptor con le stesse proprietà di sock_fd, connessa con il client -1 errore con errno settato 23

24 Socket esempio di creazione server/client Aggiungiamo la chiamata a accept int main (void){ int fd_skt, fd_c; struct sockaddr_un sa; /* ind AF_UNIX */ strcpy(sa.sun_path, SOCKNAME); sa.sun_family = AF_UNIX; if (fork()!=0) { /* padre, server */ fd_skt = socket(af_unix,sock_stream,0); bind(fd_skt, (struct sockaddr *) &sa, sizeof(sa)); listen(fd_skt,somaxconn) fd_c = accept(fd_skt,null,0); /* segue */ }else{ /* figlio, client */... } 24

25 Socket system call connect() int connect(int sock_fd, const struct sockaddr *sa, socklen_t sa_len); Caratteristiche usata da un client per connettere a sock_fd alla raggiungibile da sa invia al server l'indirizzo locale a cui inviare la risposta, assegnando una porta libera locale Sospende il processo fino a che la connessione non è stata stabilita Ritorno 0 in caso di connessione stabilita -1 se la socket non esiste o la coda è piena. errno viene settato 25

26 Socket esempio di creazione server/client Aggiungiamo la chiamata a connect #define N }else{ /* figlio, client */ fd_skt=socket(af_unix,sock_stream,0); while (connect(fd_skt,(struct sockaddr*)&sa, sizeof(sa)) == -1 ) { if ( errno == ENOENT ) sleep(1); /* la socket non esiste ancora */ else exit(exit_failure); } write(fd_skt, Hallo!, 7); read(fd_skt, buf, N); printf( Client got: %s\n, buf) ; close(fd_skt); exit(0);... 26

27 Socket esempio di creazione server/client #define N if (fork()!=0) { /* padre, server */ fd_skt = socket(af_unix,sock_stream,0); bind(fd_skt,(struct sockaddr *)&sa, sizeof(sa)); listen(fd_skt,somaxconn); fd_c = accept(fd_skt, NULL,0); read(fd_c, buf, N); printf( Server got: %s\n,buf) ; write(fd_c, Bye!, 5); close(fd_skt); close(fd_c); exit(0); }... 27

28 Socket esempio finale Compilazione bash:~$ gcc -Wall -pedantic clserv.c -o clserv Esecuzione bash:~$./clserv -- un po di attesa Server got: Hallo! Client got: Bye! bash:~$ 28

29 Socket - commenti Nell esempio visto manca completamente la gestione degli errori (deve essere effettuata al solito modo) Una volta creata la connessione si possono leggere e scrivere i dati come con una pipe Si può fare molto di più dell esempio: gestire più client contemporaneamente indirizzi AF_INET: comunicazione con macchine diverse usare comunicazioni connectionless (datagram) senza creare una connessione permanente gestire macchine con diversi endians gestire dettagli del comportamento dei socket, accedere al database dei nomi (eg. 29

30 Socket: gestire più client Soluzioni tipiche per soddisfare più richieste: Utilizzare un server multithreaded: Un thread dispatcher che si mette in attesa ripetutamente su accept() per una nuova connessione ogni volta che la connessione è stata stabilita viene creato un nuovo thread worker Il thread worker si mette in attesa con read() dei messaggi in arrivo solo dal client relativo ad una particolare connessione Utilizzare un server sequenziale e select(): Permette di capire quale file descriptor è pronto 30

31 Socket Server Iterativo Vs Concorrente int sockfd, newsockfd;... if ( (sockfd = socket(...) ) < 0) /* err */ if ( (bind(sockfd, my_addr, my_ll) < 0) /* err */ if ( (listen(sockfd, 5) < 0) /* err */ int sockfd, newsockfd;... if ( (sockfd = socket(...) ) < 0) /* err */ if ( (bind(sockfd, my_addr, my_ll) < 0) /* err */ if ( (listen(sockfd, 5) < 0) /* err */ for( ; ; ) { newsockfd=accept(sockfd,cli_addr,cli_ll); if (newsockfd < 0) /* accept error */ read(newsockfd,...); write(newsockfd,...); close (newsockfd); } for( ; ; ) { newsockfd=accept(sockfd,cliaddr,clill); if (newsockfd < 0) /* accept error */ if (fork() == 0) { /* child */ close(sockfd); read(newsockfd,...); write(newsockfd,...); exit (0); } close (newsockfd); /* parent */ } 31

32 Socket Server & select() System call select() definita in sys/select.h permette di aspettare contemporaneamente file descriptor multipli (con timeout) int select(int nfds, /* # of file descriptors */ fd_set *rdset, /* Read descriptor set */ fd_set *wrset, /* Write descriptor set */ fd_set *errset, /* Exception descriptor set */ struct timeval *timeout); /* Timeout value */ Parametri di input nfsd è la dimensione massima dei sottoinsiemi *...set sono i sets dei file descriptors realizzati tramite mappe di bit timeout è il timeout di attesa (opzionale) Parametri di output 0 timeout; -1 errore (see errno); k < 0 numero di descriptors pronti per l'i/o Modifica fd_set ponendo a 1 i bit relativi ai file descriptors pronti per l'i/o 32

33 Socket Server & select() Semantica Si blocca finchè uno dei descrittori specificati ha dati rilevanti. In particolare: un descrittore fd atteso per la lettura (rdset) è considerato pronto quando una read su fd non si blocca, quindi anche se è stato chiuso con EOF la read non si blocca un descrittore fd atteso per la scrittura (wrset) è considerato pronto quando una write su fd non si blocca un descrittore fd atteso per eccezioni (errset) è considerato pronto quando si è verificato un errore all uscita della select() i set sono modificati per indicare chi è pronto. 33

34 Socket Server & select() Come specificare i set rdset, wrset, errset sono maschere di bit e vengono manipolate usando delle macro: FD_ZERO(&fdset) azzera la maschera fdset FD_SET(fd,&fdset) mette a 1 il bit corrispondente al file descriptor fd nella maschera fdset FD_CLR(fd,&fdset) mette a 0 il bit corrispondente al file descriptor fd nella maschera fdset FD_ISSET(fd,&fdset) vale 1 se il bit corrispondente al file descriptor fd nella maschera fdset era a 1 e zero altrimenti 34

35 Socket Server & select() Come specificare i set: esempio 1. tipicamente si azzera un set e poi si mettono a 1 i bit che interessano: 2. creare la maschera di attesa per il primo fra fd1 e fd2 pronto in lettura fd_set rdset; FD_ZERO(&rdset); FD_SET(fd1,&rdset); FD_SET(fd2,&rdset); Come controllare chi è pronto? non c è modo di avere la lista, si devono testare ciascuno con FD_ISSET if (FD_ISSET(fd1,&rdset)) read(fd1,buf,n); else if (FD_ISSET(fd2,&rdset)) read(fd2,buf,n);... 35

36 Socket Server & select(): il server static void run_server(struct sockaddr * psa) { int fd_sk, /* socket di connessione */ fd_c, /* socket di I/O con un client */ fd_num=0, /* max fd attivo */ fd; /* indice per verificare risultati select */ char buf[n]; /* buffer messaggio */ fd_set set, /* l insieme dei file descriptor attivi */ rdset; /* insieme fd attesi in lettura */ int nreaded; /* numero caratteri letti */... } 36

37 Socket Server & select(): il server static void run_server(struct sockaddr * psa) { int fd_sk, fd_c, fd_num=0, fd; char buf[n]; fd_set set, rdset; int nreaded; fd_sk = socket(af_unix, SOCK_STREAM, 0); bind(fd_sk,(struct sockaddr *)psa, sizeof(*psa)); listen(fd_sk, SOMAXCONN); /* manteniamo il massimo indice di descrittore attivo in fd_num */ if (fd_sk > fd_num) fd_num = fd_sk; FD_ZERO(&set); FD_SET(fd_sk,&set);... } 37

38 Socket Server & select(): il server static void run_server(struct sockaddr * psa) { int fd_sk, fd_c, fd_num=0, fd; char buf[n]; fd_set set, rdset; int nreaded; fd_sk = socket(af_unix, SOCK_STREAM, 0); bind(fd_sk,(struct sockaddr *)psa, sizeof(*psa); listen(fd_sk, SOMAXCONN); if (fd_sk > fd_num) fd_num = fd_sk; /* max num descrittore attivo*/ FD_ZERO(&set); FD_SET(fd_sk,&set); while (TRUE) { rdset = set; /* re-init x ogni ciclo dato che select lo modifica */ /* nota fd_num + 1: vogliamo il N max di descrittori attivi, non l indice massimo */ if (select(fd_num + 1, &rdset, NULL, NULL, NULL) == -1)) /* gestione errore */... } 38

39 Socket Server & select(): il server static void run_server(struct sockaddr * psa) {... /* continua dal while */ else { /* select OK */ for (fd = 0; fd < fd_num; fd++) { if (FD_ISSET(fd, &rdset)) { if (fd == fd_sk) { /* sock connect pronto */ fd_c = accept(fd_sk, NULL,0); FD_SET(fd_c, &set); if (fd_c > fd_num) fd_num = fd_c; } else { /* sock I/0 pronto */ nreaded = read(fd, buf, N); if (nreaded == 0 ) { /* EOF client finito */ FD_CLR(fd, &set); fd_num = aggiorna(&set); close(fd);... } 39

40 Socket Server & select(): il server static void run_server(struct sockaddr * psa) {... /* continua dal while */ else { /* nread!=0 */ printf( Server got: %s\n, buf) ; write(fd, Bye!, 5); } }... } /* chiude fino al while() */ } La parte del server termina qui. Vediamo il client... 40

41 Socket Server & select(): il client static void run_client(struct sockaddr * psa) { /* I figli sono generati da fork() */ if (fork() ==0 ) { /* figlio, client */ int fd_skt; char buf[n]; fd_skt=socket(af_unix, SOCK_STREAM, 0); while (connect(fd_skt,(struct sockaddr*)&sa, sizeof(sa)) == -1 ) { if ( errno == ENOENT ) sleep(1); else exit(exit_failure); } write(fd_skt, Hallo!,7); read(fd_skt,buf,n); printf( Client got: %s\n, vbuf) ; close(fd_skt); exit(exit_success); } } 41

42 Socket Server & select(): main di esecuzione... #include <sys/select.h> #include <sys/un.h> /* ind AF_UNIX */ #define SOCKNAME./mysock" #define N 100 int main (void){ int i; struct sockaddr_un sa; /* ind AF_UNIX */ strcpy(sa.sun_path, SOCKNAME); sa.sun_family=af_unix; for(i=0; i< 4; i++) } run_client(&sa); /* attiva un client*/ run_server(&sa); /* attiva il server */ return 0; 42

43 Socket esempio finale Compilazione bash:~$ gcc -Wall -pedantic clserv.c -o clserv Esecuzione bash:~$./clserv Server got: Hallo! Server got: Hallo! Client got: Bye! Client got: Bye! Server got: Hallo! Server got: Hallo! Client got: Bye! Client got: Bye! Tuttavia il server rimane attivo... 43

44 Socket Server & select(): considerazioni Ancora qualcosa un modo per terminare il server è utilizzando i segnali Es.: SIGINT CTRL-C È possibile personalizzare la gestione del segnale in modo da farlo terminare gentilmente Rimandiamo quindi ai segnali... Sono disponibili altre SC per il controllo dei descrittori pronti pselect poll... 44

45 Socket & internet AF_INET I socket con indirizzi AF_UNIX possono essere usati solo sulla stessa macchina Ci sono molte altre famiglie di indirizzi Accenneremo ad AF_INET famiglia di indirizzi che permette di far comunicare i socket su Internet vedremo come usarli (assumeremo noti i dettagli su come funziona Internet) Prima vedremo quanto sia importante tenere in considerazione come i dati viaggiano tra i sistemi 45

46 Big and Little endian Comunicazione tra macchine diverse Se comunichiamo una sequenza di byte fra macchine diverse: La comunicazione preserva l ordine dei byte (quindi non ci sono problemi con le stringhe) Ci sono però due modi di rappresentare i numeri binari; Es.: D04C esadecimale (2 byte) 46

47 Big and Little endian Comunicazione tra macchine diverse Quindi se comunico D04C esadecimale da little endian a big endian Verrà inviato prima 4C e poi D0 La macchina ricevente interpreta il primo come byte più significativo e il secondo come byte meno significativo Quindi il numero ricevuto sarò 4CD0 47

48 Big and Little endian Comunicazione tra macchine diverse È necessario avere un ordine dei byte indipendente dalla macchina e usare sempre quello per gli scambi È il network byte order Network byte order La macchina mittente converte dalla sua Rappresentazione da host byte order al network byte order Il ricevente fa l inverso È necessario farlo solo per dati binari grezzi non per dati già in formato standard (es. JPEG) 48

49 Network byte order Definite in arpa/inet.h uint16_t htons (uint16_t hostnum); /* TO NETWORK BYTE ORDER */ uint32_t htonl (uint32_t hostnuml); /* TO NETWORK BYTE ORDER */ uint16_t ntohs (uint16_t netnum); /* TO HOST BYTE ORDER */ uint32_t ntohl (uint32_t netnuml); /* TO HOST BYTE ORDER */ Esempio stampare i 2 byte che rappresentano D04C in ordine crescente in host byte order in network byte order 49

50 Network byte order: esempio #include <arpa/inet.h> #include <stdio.h> int main (void) { uint16_t n = 0xD04C, nnet; unsigned char* p; p = (unsigned char *) &n; printf( %x %x \n, *p, *(p+1)); /* host order */ nnet = htons(n); p = (unsigned char *) &nnet; printf( %x %x \n, *p, *(p+1)); /* net order */ return 0; } 50

51 Network byte order: esempio Compilazione bash:~$ gcc -Wall -pedantic endian.c -o endian Esecuzione bash:~$./endian 4c d0 d0 4c bash:~$ Compilato su AMD athlon XP /proc/cpuinfo AMD, x86 sono little endian Il network byte order è big endian (dai vecchi VAX) 51

52 Indirizzi AF_INET Sono indirizzi fomati da: un identificativo della macchina (indirizzo IPv4) numero a 32 bit assegnato ad un interfaccia di rete sulla macchina vengono scritti in dotted notation a gruppi di 4 byte convertiti in decimale separati da punti (es ) ognuno ha anche un nome simbolico (es. un identificativo della porta all interno della macchina è un numero a 16 bit identifica un servizio. Es: 80 porta server HTTP 21 porta server ftp etc... 52

53 Indirizzi AF_INET Strutture definita in netinet/in.h struct sockaddr_in { sa_family_t sin_family; /* AF_INET, etc */ in_port_t sin_port; /* numero di porta (uint16_t) */ struct in_addr sin_addr; /* indirizzo IPv4 */ }; struct in_addr { }; in_addr_t s_addr; /* indirizzo (uint32_t) */ sin_addr Identifica l'indirizzo dell'host sin_port Identifica la porta di ascolto Le strutture dati verranno utilizzate nella chiamata a bind() 53

54 Indirizzi AF_INET: esempio /* vogliamo rappresentare porta 80*/ struct sockaddr_in sa; sa.sin_family = AF_INET; /* numero di porta (uint16_t) deve essere in network byte order */ sa.sin_port = htons(80); /* indirizzo IPv4 (uint32_t) deve essere in network byte order */ sa.sin_addr.s_addr = htonl(216<<24) + htonl(119<<16) + htonl(125<<8) + htonl(70); /* Variante dell'ultimo punto */ sa.sin_addr.s_addr = inet_addr( "); 54

55 Indirizzi AF_INET: funzioni utili Alcune funzioni utili: In arpa/inet.h sono dichiarate alcune funzioni utili per manipolare indirizzi Internet. unsigned long int inet addr (const char *name) converte name (es ) in network byte order Restituisce -1 se l'indirizzo non è valido. char *inet ntoa (struct in_addr addr) converte addr (è in network byte order) in numeri e punti. inet_ntop, inet_pton sono la loro generalizzazione e funzionano anche con IPv6 55

56 Indirizzi AF_INET: esempio HTTP /* vogliamo ottenere la pagina HTTP che corrisponde a chiedendola direttamente al web server di porta 80*/ #define REQUEST GET / HTTP/1.0\r\n\r\n" /* DEFAULT HTTP GET REQUEST */ int main (void) { struct sockaddr_in sa; int fd_skt, nread; char buf[1024]; sa.sin_family = AF_INET; sa.sin_port = htons(80); /* DEFAULT HTTP SERVER PORT */ sa.sin_addr.s_addr = inet_addr( "); /* CONNECT TO YAHOO WEB SERVER*/ fd_skt =socket(af_inet, SOCK_STREAM, 0); connect(fd_skt, (struct sockaddr*)&sa, sizeof(sa)); write(fd_skt, REQUEST, strlen(request)); /* SEND HTTP REQUEST */ nread = read(fd_skt, buf, sizeof(buf)); write(1, buf, nread); /* WRITE TO STDOUT */ close(fd_skt); return 0; } // Nota: la gestione degli errori è stata omessa 56

57 Socket esempio finale Compilazione bash:~$ gcc -Wall -pedantic getpage.c -o getp Esecuzione bash:~$./getp HTTP/ Moved Permanently Date: Mon 20 Mar :52:34 GMT Location: Connection: close Content-Type: text/html The document has moved... bash:~$ 57

58 Indirizzi AF_INET: nomi mnemonici Di solito non si usano i numeri ma dei nomi mnemonici: etc. È possibile convertire i nomi mnemonici in dotted notation usando un database distribuito (DNS) accessibile da C con getaddrinfo È possibile recuperare in formato stringa gli eventuali errori generati dalla chiamata a getaddrinfo con la chiamata a gai_strerror int gethostname(char *name, size_t namelen) È possibile ottenere il nome mnemonico pubblico della macchina su cui stiamo girando con gethostname namelen è la lunghezza massima del vettore name 58

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress. ESERCIZIARIO Risposte ai quesiti: 10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress. 10.2. Un numero intero in Java è compreso nell'intervallo ( 2 31 ) e (2 31

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

Introduzione alle applicazioni di rete

Introduzione alle applicazioni di rete Introduzione alle applicazioni di rete Definizioni base Modelli client-server e peer-to-peer Socket API Scelta del tipo di servizio Indirizzamento dei processi Identificazione di un servizio Concorrenza

Dettagli

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

Dettagli

Program m azione di Sistem a 6a

Program m azione di Sistem a 6a Program m azione di Sistem a 6a Basati sui 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

Dettagli

Introduzione al Linguaggio C

Introduzione al Linguaggio C Introduzione al Linguaggio C File I/O Daniele Pighin April 2009 Daniele Pighin Introduzione al Linguaggio C 1/15 Outline File e dati Accesso ai file File I/O Daniele Pighin Introduzione al Linguaggio C

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

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

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

Esercitazione [7] Client/Server con Socket

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

Dettagli

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

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

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

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

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

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

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

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

Dettagli

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

INTERNET DOMAIN SOCKETS (Cap.59)

INTERNET DOMAIN SOCKETS (Cap.59) INTERNET DOMAIN SOCKETS (Cap.59) Internet Domain Stream Socket TCP Internet Domain Datagram Socket UDP A differenza degli UDDS I datagrams possono essere persi duplicati o arrivare in un ordine diverso

Dettagli

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

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

Dettagli

L interfaccia socket

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

Dettagli

Laboratorio di Programmazione in rete

Laboratorio di Programmazione in rete Laboratorio di rogrammazione in rete Introduzione alla programmazione C di socket A.A. 2005/06 Comunicazione tra computer Come far comunicare più computer su una rete? Una collezione di protocolli: TC/I

Dettagli

Scrittura dei programmi applicativi di rete

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

Dettagli

Esercizio 2. Client e server comunicano attraverso socket TCP

Esercizio 2. Client e server comunicano attraverso socket TCP Esercizio 1 Scrivere una applicazione client/server in cui: Il client, in un ciclo infinito: Legge una stringa da standard input Invia al processo server la stringa. Il server visualizza: L'IP da cui si

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

Gestione dei File in C

Gestione dei File in C Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte

Dettagli

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

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

Dettagli

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine. ESERCIZIARIO Risposte ai quesiti: 2.1 Non sono necessarie modifiche. Il nuovo protocollo utilizzerà i servizi forniti da uno dei protocolli di livello trasporto. 2.2 Il server deve essere sempre in esecuzione

Dettagli

LABORATORIO di Reti di Calcolatori

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

Dettagli

Laboratorio di Sistemi Operativi

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

Dettagli

Transmission Control Protocol

Transmission Control Protocol Transmission Control Protocol Franco Callegati Franco Callegati IC3N 2000 N. 1 Transmission Control Protocol - RFC 793 Protocollo di tipo connection-oriented Ha lo scopo di realizzare una comunicazione

Dettagli

Programmazione di Rete

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

Dettagli

appunti delle lezioni Architetture client/server: applicazioni client

appunti delle lezioni Architetture client/server: applicazioni client Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture client/server: applicazioni client 1 Architetture client/server: un esempio World wide web è un esempio particolarmente

Dettagli

Controllo Winsock di Visual Basic

Controllo Winsock di Visual Basic Controllo Winsock di Visual Basic Il controllo Winsock, non visibile all'utente, consente di accedere ai servizi di rete TCP e UDP. Per creare applicazioni client o server non è necessario conoscere in

Dettagli

Socket Programming. Socket Programming. Università di Palermo

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

Dettagli

TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI

TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI Confronto tra ISO-OSI e TCP/IP, con approfondimento di quest ultimo e del livello di trasporto in cui agiscono i SOCKET. TCP/IP

Dettagli

Altri tipi di connessione

Altri tipi di connessione Altri tipi di connessione Francesca Martelli f.martel@di.unipi.it Socket Un socket è una connessione a una porta su un computer remoto, che è usata per scambiare informazioni con comandi HTTP Supponiamo

Dettagli

I file di dati. Unità didattica D1 1

I file di dati. Unità didattica D1 1 I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità

Dettagli

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client Versione 25.4.05 Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture client/server: applicazioni client 1 Architetture client/server: un esempio World wide web è un

Dettagli

Sistemi Operativi: Programmazione di Sistema

Sistemi Operativi: Programmazione di Sistema Corso di Sistemi Operativi: Programmazione di Sistema Corso di Laurea in Informatica, Università di Firenze Anno accademico 2011/2012 Prof. Luca Ferrari e-mail: ferrari@dsi.unifi.it telefono: 055 4237454

Dettagli

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1) Strutture Strutture e Unioni DD cap.10 pp.379-391, 405-406 KP cap. 9 pp.361-379 Strutture Collezioni di variabili correlate (aggregati) sotto un unico nome Possono contenere variabili con diversi nomi

Dettagli

1. RETI INFORMATICHE CORSO DI LAUREA IN INGEGNERIA INFORMATICA SPECIFICHE DI PROGETTO A.A. 2013/2014. 1.1 Lato client

1. RETI INFORMATICHE CORSO DI LAUREA IN INGEGNERIA INFORMATICA SPECIFICHE DI PROGETTO A.A. 2013/2014. 1.1 Lato client RETI INFORMATICHE - SPECIFICHE DI PROGETTO A.A. 2013/2014 1. RETI INFORMATICHE CORSO DI LAUREA IN INGEGNERIA INFORMATICA SPECIFICHE DI PROGETTO A.A. 2013/2014 Il progetto consiste nello sviluppo di un

Dettagli

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine

Dettagli

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it MODELLO CLIENT/SERVER Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it POSSIBILI STRUTTURE DEL SISTEMA INFORMATIVO La struttura di un sistema informativo

Dettagli

Sincronizzazione e comunicazione tra processi in Unix. usati per trasferire ad un processo l indicazione che un determinato evento si è verificato.

Sincronizzazione e comunicazione tra processi in Unix. usati per trasferire ad un processo l indicazione che un determinato evento si è verificato. Processi parte III Sincronizzazione e comunicazione tra processi in Unix Segnali: usati per trasferire ad un processo l indicazione che un determinato evento si è verificato. Pipe: struttura dinamica,

Dettagli

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Dettagli

Inizializzazione degli Host. BOOTP e DHCP

Inizializzazione degli Host. BOOTP e DHCP BOOTP e DHCP a.a. 2002/03 Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/~auletta/ Università degli studi di Salerno Laurea e Diploma in Informatica 1 Inizializzazione degli Host Un

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

Il client deve stampare tutti gli eventuali errori che si possono verificare durante l esecuzione.

Il client deve stampare tutti gli eventuali errori che si possono verificare durante l esecuzione. RETI INFORMATICHE CORSO DI LAUREA IN INGEGNERIA INFORMATICA SPECIFICHE DI PROGETTO A.A. 2010/2011 Il progetto consiste nello sviluppo di un applicazione client/server. Sia il server che il client dovranno

Dettagli

Laboratorio di Programmazione in Rete

Laboratorio di Programmazione in Rete Laboratorio di rogrammazione 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

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

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

Dettagli

Sistemi Operativi (modulo di Informatica II)

Sistemi Operativi (modulo di Informatica II) Sistemi Operativi (modulo di Informatica II) La comunicazione tra processi Patrizia Scandurra Università degli Studi di Bergamo a.a. 2008-09 Sommario Processi cooperanti La comunicazione tra processi Necessità

Dettagli

Files, File I/O, File Sharing. Franco Maria Nardini

Files, File I/O, File Sharing. Franco Maria Nardini Files, File I/O, File Sharing Franco Maria Nardini UNIX file types UNIX non richiede una struttura interna del file. Dal punto di vista del sistema operativo c e un solo tipo di file. Struttura e interpretazione

Dettagli

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

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

Dettagli

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

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

unsigned long inet_addr(cp) char *cp;

unsigned long inet_addr(cp) char *cp; /* bcopystru.c #include struct point int x; char *y; ; struct point a, b; struct pint *pta, *ptb; a.x = 5; a.y = pippo ; b = a; printf i valori del secondo point sono: %d %s\n,b.x,b.y); pta=

Dettagli

Reti di Telecomunicazioni Mobile IP Mobile IP Internet Internet Protocol header IPv4 router host indirizzi IP, DNS URL indirizzo di rete

Reti di Telecomunicazioni Mobile IP Mobile IP Internet Internet Protocol header IPv4 router host indirizzi IP, DNS URL indirizzo di rete IP Analizziamo con sufficiente dettaglio il sistema denominato IP, usato per consentire a due computer mobili di spostarsi liberamente in altre reti pur mantenendo lo stesso indirizzo IP. In particolare,

Dettagli

Interazione (TCP) Client-Server con le socket

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

Dettagli

Corso di Reti di Calcolatori T

Corso di Reti di Calcolatori T Università degli Studi di Bologna Scuola di Ingegneria Corso di Reti di Calcolatori T Esercitazione 2 (proposta) Socket Java con connessione Luca Foschini Anno accademico 2015/2016 Esercitazione 2 1 Specifica

Dettagli

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

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

Dettagli

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

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

Dettagli

Soluzione dell esercizio del 2 Febbraio 2004

Soluzione dell esercizio del 2 Febbraio 2004 Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo

Dettagli

ESERCIZI DI PROGRAMMAZIONE C IN AMBIENTE UNIX

ESERCIZI DI PROGRAMMAZIONE C IN AMBIENTE UNIX ESERCIZI DI PROGRAMMAZIONE C IN AMBIENTE UNIX Introduzione In questa dispensa sono stati raccolti alcuni esercizi di programmazione C in ambiente Unix, tratti dagli esami di Sistemi Operativi svoltisi

Dettagli

INTERNET e RETI di CALCOLATORI A.A. 2011/2012 Capitolo 4 DHCP Dynamic Host Configuration Protocol Fausto Marcantoni fausto.marcantoni@unicam.

INTERNET e RETI di CALCOLATORI A.A. 2011/2012 Capitolo 4 DHCP Dynamic Host Configuration Protocol Fausto Marcantoni fausto.marcantoni@unicam. Laurea in INFORMATICA INTERNET e RETI di CALCOLATORI A.A. 2011/2012 Capitolo 4 Dynamic Host Configuration Protocol fausto.marcantoni@unicam.it Prima di iniziare... Gli indirizzi IP privati possono essere

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E01 Esempi di programmi A. Miola Ottobre 2011 1 Contenuti Vediamo in questa lezione alcuni primi semplici esempi di applicazioni

Dettagli

UDP. Livello di Trasporto. Demultiplexing dei Messaggi. Esempio di Demultiplexing

UDP. Livello di Trasporto. Demultiplexing dei Messaggi. Esempio di Demultiplexing a.a. 2002/03 Livello di Trasporto UDP Descrive la comunicazione tra due dispositivi Fornisce un meccanismo per il trasferimento di dati tra sistemi terminali (end user) Prof. Vincenzo Auletta auletta@dia.unisa.it

Dettagli

Reti di Telecomunicazione Lezione 7

Reti di Telecomunicazione Lezione 7 Reti di Telecomunicazione Lezione 7 Marco Benini Corso di Laurea in Informatica marco.benini@uninsubria.it Il protocollo Programma della lezione file transfer protocol descrizione architetturale descrizione

Dettagli

Protocolli di Comunicazione

Protocolli di Comunicazione Protocolli di Comunicazione La rete Internet si è sviluppata al di fuori dal modello ISO-OSI e presenta una struttura solo parzialmente aderente al modello OSI. L'architettura di rete Internet Protocol

Dettagli

L API socket ed i daemon

L API socket ed i daemon L API socket ed i daemon Massimo Bernaschi Istituto per le Applicazioni del Calcolo Mauro Picone Consiglio Nazionale delle Ricerche Viale del Policlinico, 137-00161 Rome - Italy http://www.iac.cnr.it/

Dettagli

puntatori Lab. Calc. AA 2007/08 1

puntatori Lab. Calc. AA 2007/08 1 puntatori Lab. Calc. AA 2007/08 1 parametri delle funzioni (dalla lezione scorsa) gli argomenti in C vengono passati by value dalla funzione chiamante alla funzione chiamata la lista degli argomenti viene

Dettagli

Esercitazione [8] Pipe e FIFO

Esercitazione [8] Pipe e FIFO Esercitazione [8] Pipe e FIFO 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 Multi-Nodo

Dettagli

Scrittura dei programmi applicativi di rete

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

Dettagli

Lab. di Sistemi Operativi - Esercitazione n 7- -Gestione dei processi Unix-

Lab. di Sistemi Operativi - Esercitazione n 7- -Gestione dei processi Unix- Lab. di Sistemi Operativi - Esercitazione n 7- -Gestione dei processi Unix- 1 Sommario Esercizi sulla gestione dei processi Creazione di un nuovo processo: fork Sincronizzazione tra processi: wait 2 -

Dettagli

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory FILE SYSTEM : INTERFACCIA 8.1 Interfaccia del File System Concetto di File Metodi di Accesso Struttura delle Directory Montaggio del File System Condivisione di File Protezione 8.2 Concetto di File File

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

Introduzione a JDConnector

Introduzione a JDConnector JDConnector Help Introduzione a JDConnector JDConnector è stato creato per integrare il gestionale Mitico ERP con Parts Manager Pro. Configurando opportunamente i parametri di connessione dei due programmi,

Dettagli

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

Dettagli

Do-Dots Protocollo di comunicazione

Do-Dots Protocollo di comunicazione Do-Dots Protocollo di comunicazione Ultimo aggiornamento 10 maggio 2011 rev3 Spiegazioni 10/05/2011 rev2 Primo aggiornamento con attuali comandi 03/05/2011 rev1 - Stesura iniziale 14/05/2010 DOCUMENTO

Dettagli

Allocazione dinamica della memoria - riepilogo

Allocazione dinamica della memoria - riepilogo Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Storage duration Allocazione dinamica della

Dettagli