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

Dimensione: px
Iniziare la visualizzazioe della pagina:

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

Transcript

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

2 Sommario Comunicazione tra processi su macchine diverse in rete: Socket TCP o Socket Stream Esercizi: Socket TCP Client/Server Interattivo Client/Server Interattivo trasferire file con socket Gestire più client: Client/Server Concorrente multi-processo Client/Server Concorrente multi-thread 2

3 - Socket TCP o Socket Stream - 3

4 - Socket TCP: Generalità Canale di comunicazione bidirezionale tra processi attivi su nodi diversi della stessa rete. Creata all interno del dominio internet in cui viene utilizzato protocollo TCP per lo scambio di dati tra i vari nodi. il NODO: INDIRIZZO IP PROCESSO A NODO: INDIRIZZO IP PROCESSO B socket porta Internet (TCP/IP) porta socket 4

5 - Socket TCP: Dominio & Indirizzi Il dominio all interno del quale viene creata la socket TCP si chiama dominio internet e lo si rappresenta: con il protocollo family PF_INET oppure addres family AF_INET (dominio internet) In questo dominio, ogni nodo è identificato da: numero di porta ( 2 byte = intero a 16 bit da 0 a ) indirizzo IP (4 byte = intero a 32 bit es ) che rappresentano il formato degli indirizzi internet. Quindi, si deve utilizzare una struttura con cui rappresentare tipi di indirizzo. questo 5

6 - Socket TCP: Formato degli Indirizzi Ipv4 #include <netinet/ip.h> struct sockaddr_in { short sa_family; /* Famiglia di indirizzi AF_INET */ short sin_port; /* Numero di porta 2 byte*/ struct in_addr sin_addr; /* indir. IP 4 byte*/ char sin_zero[8]; /* riempimento non usato */ }; dovein_addr rappresenta un indirizzo IP struct in_addr { u_long s_addr; /* 4 byte */ }; 6

7 - Socket TCP: Struttura Indirizzi Ipv4 Il membro sin_family deve essere sempre impostato (2 byte) sin port specifica il numero di porta (2 byte) Il membro sin_addr contiene l indirizzo internet del destinatario comunicazione. (4 byte) della sin_zero (8 byte) serve a far si che la grandezza della struttura sia almeno 16 byte. (riempimento) 7

8 - Socket TCP: Struttura Indirizzi Ipv4 Nel protocollo TCP/IP, gli interi cioè gli indirizzi e i numeri di porta sono trasmessi in network byte order ossia: byte ordinati in formato big endian (prima il byte più significativo) Sono necessarie apposite funzioni di conversione per mantenere la portabilità del codice. Infatti, i processori memorizzano interi in memoria sia in formato big endian (Motorola) che little endian (Pentium) (prima byte meno significativo) Funzioni di conversione tra interi a 16 e 32 senza segno unsigned: #include <netinet/in.h> 1. uint32_t htonl(uint32_t x) (big endian) 2. uint16_t htons(uint16_t x) Returns: Valore in network byte order 1. uint32_t ntohl(uint32_t x) 2. uint16_t ntohs(uint16_t x) Returns: Valore in host byte order 8

9 - Socket TCP: Conversione indirizzi IP Funzione inet_aton (ascii to network): Ipv4 #include <netinet/in.h> struct sockaddr_in indirizzo; if (inet_aton( , &indirizzo.sin_addr) == 0) perror( inet_aton ), exit(1); converte l indirizzo IP (usando la notazione puntata) in un unsigned long mette nel campo sin_addr della struttura degli indirizzi Restituisce: zero in caso di errore l indirizzo in Network byte Order altrimenti e lo 9

10 - Socket TCP: Conversione indirizzi IP Funzione inet_ntop: Ipv6 #include <netinet/in.h> char buff[maxline]; struct sockaddr_in cliaddr; if(inet_ntop(af_inet,&cliaddr.sin_addr,buff,sizeof(buff))== 0) perror( inet_ntop ), exit(1); Converte l indirizzo dalla relativa struttura in una stringa simbolica Restituisce: NULL in caso di errore un puntatore non nullo alla stringa convertita in caso si successo 10

11 - Socket TCP: Impostare indirizzi 11

12 - Socket TCP: Funzione bind (lato server) Permette di assegnare uno specifico indirizzo al socket: struct sockaddr_in mio_indirizzo; mio_indirizzo.sin_family = AF_INET; mio_indirizzo.sin_port = htons(5200); mio_indirizzo.sin_addr.s_addr = htonl(inaddr_any); bind(fd, (struct sockaddr *) &mio_indirizzo, sizeof(mio_indirizzo)); Il server chiama bind per stabilire su quale indirizzo mettersi in ascolto Solitamente si scegli solo il numero di porta Come indirizzo IP, sceglie INADDR_ANY, cosi' accetta connessioni dirette a qualunque indirizzo 12

13 - Socket TCP: Funzione connect (lato client) Permette ad un client di aprire una connessione con il server: Il client deve conoscere l'indirizzo IP e la porta del processo server struct sockaddr_in indirizzo; indirizzo.sin_family = AF_INET; indirizzo.sin_port = htons(5200); inet_aton( , &indirizzo.sin_addr); Accetta connessioni solo dall indirizzo ip specificato connect(fd, (struct sockaddr *) &indirizzo, sizeof(indirizzo)); La funzione termina solo dopo che la connessione è stata creata Restituisce: 0 se ok -1 in caso di errore 13

14 - Socket TCP: Funzione gethostbyname (lato client) Ottenere un indirizzo IP a partire dal nome di un host #include <sys/socket.h> #include <netdb.h> struct hostent *gethostbyname(const char *name); Restituisce: un puntatore a struttura di tipo hostent che tra le tante informazioni contiene anche l indirizzo IP NULL in caso di errore 14

15 - Socket TCP: Struttura di un server Esempio: int fd1, fd2; struct sockaddr_in mio_indirizzo; mio_indirizzo.sin_family = AF_INET; mio_indirizzo.sin_port = htons(5200); mio_indirizzo.sin_addr.s_addr = htonl(inaddr_any); fd1 = socket(pf_inet, SOCK_STREAM, 0); Accetta connessioni dirette qualunque indirizzo a bind(fd1, (struct sockaddr *) &mio_indirizzo, sizeof(mio_indirizzo)); listen(fd1, 5); fd2 = accept(fd1, NULL, NULL);... close(fd2); close(fd1); 15

16 - Socket TCP: Struttura di un client Esempio: int fd, portno; struct sockaddr_in serv_addr; struct hostent *server; server = gethostbyname(argv[1]); portno = atoi(argv[2]); fd = socket(pf_inet, SOCK_STREAM, 0); serv_addr.sin_family = AF_INET; serv_addr.sin_port = htons(portno); memcpy((char *)&serv_addr.sin_addr,(char *)server->h_addr, server->h_length); connect(fd,(struct sockaddr *) & serv_addr, sizeof(serv_addr));... close(fd); 16

17 Vengono scambiati tra client e server tre segmenti prima di instaurare una connessione (SYN1/SYN2-ACK1/ACK2) 17

18 - Esercizio: client/server con socket TCP e server interattivo - 18

19 Esercizio n 1 Socket TCP Realizzare uno scambio di messaggi tra client e server mediante socket TCP. Il client invia un messaggio al server, il quale dopo aver ricevuto il messaggio comunica al client l avvenuta ricezione. Utilizzo, lanciare i due programmi in due shell separate della stessa macchina o di macchine diverse Esecuzione sulla stessa macchina $./server.out <numero_porta> $./client.out localhost <numero_porta> Utilizzare come <numero_porta> il numero di matricola Esecuzione sul macchine diverse $./server.out <numero_porta> $./client.out IP macchina server <numero_porta> Output: (CLIENT) Scrivere un messaggio: ciao (SERVER) Ecco il messaggio ricevuto dal client: ciao (CLIENT) Ecco il messaggio ricevuto dal server: MESSAGGIO RICEVUTO, FINE COMUNICAZIONE N.B. localhost è il nome della macchina su cui è lanciato il processo server 19

20 Sol. Eser. n 1 server.c #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <string.h> void error(char *msg) { perror(msg); exit(1);} int main(int argc, char *argv[]) { int sockfd, newsockfd, portno; char buffer[256]=""; struct sockaddr_in serv_addr; int n; char *messaggio_ricevuto="messaggio RICEVUTO, FINE COMUNICAZIONE"; if (argc < 2) { fprintf(stderr,"errore, nessuna porta specificata\n"); exit(1); } 20

21 Sol. Eser. n 1 server.c sockfd = socket(af_inet, SOCK_STREAM, 0); if (sockfd < 0) error("errore DI APERTURA DELLA SOCKET"); portno = atoi(argv[1]); Accetta connessioni dirette qualunque indirizzo serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = INADDR_ANY; serv_addr.sin_port = htons(portno); //return network byte order a if (bind(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) error("errore DI BINDING"); listen(sockfd,5); 21

22 Sol. Eser. n 1 server.c while((newsockfd = accept(sockfd, NULL, NULL)) > -1) { if (newsockfd < 0) error("errore DI ACCEPT"); n = read(newsockfd, buffer, 255); if (n < 0) error("errore in lettura dalla socket"); printf("(server) Messaggio ricevuto dal client: %s\n",buffer); n = write(newsockfd,messaggio_ricevuto,strlen(messaggio_ricevuto)+1); if (n < 0) error("errore in scrittura sulla socket"); close(sockfd); }//end while close(newsockfd); return 0; } //end server 22

23 Sol. Eser. n 1 client.c #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <string.h> void error(char *msg) {perror(msg); exit(0);} int main(int argc, char *argv[]) {int sockfd, portno, n; struct sockaddr_in serv_addr; struct hostent *server; char send_buffer[256]; char rec_buffer[256]=""; if (argc < 3) { fprintf(stderr,"uso %s nomehost porta\n", argv[0]); exit(0);} 23

24 portno = atoi(argv[2]); Sol. Eser. n 1 client.c sockfd = socket(af_inet, SOCK_STREAM, 0); if (sockfd < 0) error("errore in apertura"); server = gethostbyname(argv[1]); if (server == NULL) { fprintf(stderr,"errore, l host non esiste\n"); exit(0); } serv_addr.sin_family = AF_INET; memcpy((char *)&serv_addr.sin_addr,(char *)server->h_addr, server->h_length); serv_addr.sin_port = htons(portno); if (connect(sockfd,(struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) error("errore di connessione"); 24

25 Sol. Eser. n 1 client.c printf("(client) Scrivere un messaggio: "); fgets(send_buffer,255,stdin);/*legge una linea dallo standard output*/ n = write(sockfd,send_buffer,strlen(send_buffer)); if (n < 0) error("errore in scrittura sulla socket"); n = read(sockfd,rec_buffer,255); if (n < 0) error("errore in lettura sulla socket"); printf("(client) Mess ricevuto dal server: %s\n",rec_buffer); close(sockfd); return 0; }//end client 25

26 - Esercizio: client/server con socket TCP Server concorrente multi processo - 26

27 Esercizio n 2 Socket TCP Scrivere due programmi C, server.c e client.c. che comunicano tramite socket TCP. Il server.c crea una socket TCP, ed ogni volta che instaura una connessione con un client, mediate fork crea un nuovo processo (server concorrente) e stampa a video l indirizzo IP del client che ha effettuato la connessione. Tale processo, dovrà leggere sul socket il messaggio scritto dal client stampandolo a video (lanciare l esecuzione dei due programmi su due shell distinti della stessa macchina o di macchine diverse) Esecuzione di processi sulla stessa macchina $ (shell1)./server.out <numero_porta> $ (shell2)./client.out localhost <numero_porta> Esecuzione di processi su macchine diverse $ (shell1)./server.out <numero_porta> $ (shell2)./client.out IP macchina server <numero_porta> Si utilizzi fgets per il messaggio da riga di comando 27

28 Sol. Eser. n 2 server.c #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <stdio.h> #include <netdb.h> #include <stdlib.h> main(int argc, char *argv[]) {int s, ns, pid,portno; struct sockaddr_in sin, client; char buf[80], char buffer[80]; if ((s = socket(af_inet, SOCK_STREAM, 0)) == -1) {perror("errore: socket"); exit(1); } portno = atoi(argv[1]); sin.sin_family = AF_INET; sin.sin_port = htons(portno); sin.sin_addr.s_addr = htonl(inaddr_any); if (bind(s, (struct sockaddr *) &sin, sizeof(sin)) == -1) { perror("errore: bind"); exit(1); } if (listen(s, 5) == -1) { perror("errore: listen"); exit(1); } 28

29 len=sizeof(client); while(1) //loop infinito {if ((ns = accept(s,(struct sockaddr *)&client,&len)) == -1) { perror("errore: accept"); exit(1); } if ((pid = fork()) == -1) { Sol. Esercizio N 2 server perror("errore: fork"); exit(1); } if (pid == 0) { while(1) { if ((pid = read(ns, buf, sizeof(buf))) == -1) { perror("tomd: read"); exit(1); } if (pid < sizeof(buf)) break; printf("messaggio da client: %s", buf); } close(ns);//il figlio termina exit(0); } //end if inet_ntop(af_inet, &client.sin_addr, buffer, sizeof(buffer)); printf("request from host %s\n", buffer); close(ns); }//end loop}//end server 29

30 Sol. Eser. n 2 client.c #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <string.h> main(int argc,char *argv[]){ int s,portno; struct sockaddr_in sin; struct hostent *hp; char buf[80]; if (argc!= 3) { printf("illegal number of arguments"); exit(1); } if ((hp = gethostbyname(argv[1])) == 0) { perror("tom: gethostbyname"); exit(1); } 30

31 Sol. Eser. n 2 client.c portno = atoi(argv[2]); sin.sin_family = AF_INET; memcpy((char *)&sin.sin_addr,(char *)hp->h_addr,hp->h_length); sin.sin_port = htons(portno); if ((s = socket(af_inet, SOCK_STREAM, 0)) == -1) { perror( errore: socket"); exit(1); } if (connect(s, (struct sockaddr *) &sin, sizeof(sin)) == -1) { perror( errore: connect"); exit(1);} printf("(client) Scrivere un messaggio: "); fgets(buf,255,stdin); if (write(s, buf, sizeof(buf)) == -1) { perror( errore: write"); exit(1); } close(s); } 31

32 - Esercizio: client/server con socket TCP Server concorrente multi-thread per gestire più client- 32

33 Esercizio n 3 Socket TCP Scrivere due programmi C, servermultithread.c e client.c. Il programma servermultithread.c, crea una socket TCP e rimane in attesa di ricevere una connessione. Quando riceve una connessione, crea un thread con chiamata ad una funzione che gestisce la connessione, mentre il programma server rimane in ascolto per eventuali altre richieste di connessione. Il programma client, si connette alla socket TCP ed invia il messaggio passato da tastiera (usare fgets) al server. Il server dopo aver stampato l indirizzo IP del client connesso tramite il thread legge il messaggio e lo stampa a video (Lanciare i due programmi in due shell distinte della stessa macchina o di macchine diverse, e compilare il server con -lpthread) Esecuzione server: $./servermultithread.out <numporta> Esecuzione client: $./client.out localhost e/o IP macchina server <numporta> 33

34 - Comunicazione client/server con socket TCP - Schema Server concorrente multi-thread per gestire più client server Socket TCP client 1 pthread_create() processo thread legge il messaggio del client dalla socket gestisci Il processo thread gestisce la connessione con i client stampa il messaggio del client a video 34

35 - Comunicazione client/server con socket TCP - Schema Server concorrente multi-thread per gestire più client server client Thread_1 Connesso a Connesso a Thread_2 client

36 #include <errno.h> #include <sys/types.h> #include <sys/socket.h> #include <pthread.h> #include <netinet/in.h> #include <netdb.h> #include <stdio.h> #include <stdlib.h> #define N 256 Sol. Eser. n 3 server.c void *gestisci(void *arg) { printf("gestisci(): creato il thread\n"); char buf[n]; while (read((int *) arg, buf, N)!= 0) { printf("server %s\n", buf); } close((int *) arg); pthread_exit (0); } 36

37 Sol. Eser. n 3 server.c int main(int argc, char *argv[]) { int s_fd, c_fd, portno, len; pthread_t tid; char buffer[n]; struct sockaddr_in sin, client; s_fd = socket(af_inet, SOCK_STREAM, 0); portno = atoi(argv[1]); sin.sin_family = AF_INET; sin.sin_port = htons(portno); sin.sin_addr.s_addr = htonl(inaddr_any); len = sizeof(client); bind(s_fd, (struct sockaddr *) &sin, sizeof(sin)); isten(s_fd, 5); 37

38 Sol. Eser. n 3 server.c while (1) { c_fd = accept(s_fd, (struct sockaddr *)&client, &len); inet_ntop(af_inet, &client.sin_addr, buffer, sizeof(buffer)); printf("request from client %s\n", buffer); } pthread_create(&tid, NULL, gestisci, (void *) c_fd); pthread_detach(tid);//serve per liberare risorse close(s_fd); return 0; }//end server 38

39 Sol. Eser. n 3 client.c #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #define N 256 int main(int argc, char *argv[]) { int c_fd,portno; struct sockaddr_in sin; struct hostent *hp; char buffer[n]; if (argc!= 3) { printf("illegal number of arguments"); exit(1); } if ((hp = gethostbyname(argv[1])) == 0) { perror("tom: gethostbyname"); exit(1); } 39

40 Sol. Eser. n 3 client.c c_fd = socket(af_inet, SOCK_STREAM, 0); portno = atoi(argv[2]); sin.sin_family = AF_INET; memcpy((char *)&sin.sin_addr,(char *)hp->h_addr,hp->h_length); sin.sin_port = htons(portno); if(connect(c_fd, (struct sockaddr *) &sin, sizeof(sin)) < 0) {printf("connect() failed\n"); return 1; } printf("(client) Scrivere un messaggio: "); fgets(buffer,n,stdin); write(c_fd, buffer, strlen(buffer)); printf("client %d ha inviato il messaggio\n", getpid()); close(c_fd); return 0; }//end client 40

41 - Esercizio: client/server con socket TCP server interattivo per copia file - 41

42 Esercizio n 4 Socket TCP Si realizzino una coppia di programmi client/server che, utilizzando i socket TCP come mezzo di trasmissione, copiano file da un processo all'altro. Il processo client, scrive il contenuto del file da trasferire sulla socket, il processo server legge dalla socket e scrive sul nuovo file. Esecuzione: $./server <nome_porta> <nome_nuovo_file> $./client <nome_file_da_trasferire> localhost <nome_porta> Utilizzare come <nome_porta> il numero di matricola. 42

43 - Passi da compiere - Lato Server Lato Client socket socket bind connect listen open file da trasferire accept read file da trasferire open file write su socket read da socket write su file

44 Sol. Eser. n 4 server.c #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <string.h> #include <fcntl.h> #define MAXBUF 8192 int main(int argc, char * argv[]) { int server_socket,connect_socket,portno; int client_addr_len; int retcode,fd; struct sockaddr_in server_addr; char line[maxbuf]; if(argc < 3) { printf("usage:\n%s port nomefilelocale\n",argv[0]); return(0); } 44

45 Sol. Eser. n 4 server.c printf("server: fase di inizializzazione\n"); server_socket = socket(af_inet,sock_stream,0); if(server_socket == -1) { perror("aprendo il socket del server: "); return(-1); } portno = atoi(argv[1]); server_addr.sin_family = AF_INET; Accetta connessioni dirette a qualunque indirizzo server_addr.sin_addr.s_addr = INADDR_ANY; server_addr.sin_port = htons(portno); retcode = bind(server_socket,(struct sockaddr*)&server_addr, sizeof(server_addr)); if(retcode == -1) { perror("bind error"); return(-1); } 45

46 Sol. Eser. n 4 server.c listen(server_socket,1); printf("server: attendo connessione\n"); connect_socket = accept(server_socket,null,null); printf("server: accettata nuova connessione\n Apro file locale %s",argv[2]); fd = open(argv[2],o_wronly O_CREAT, S_IRUSR S_IWUSR); if(fd == -1) {perror("aprendo il file locale"); return(-2);} do {//ciclo di lettura da socket retcode = read(connect_socket,line,maxbuf); if(retcode!= -1) write(fd,line,retcode); //scrittura su file } while(retcode > 0); close(fd);//chiusura file printf("\n Fine del messaggio, chiusura della connessione\n"); close(connect_socket);//chiude la connessione printf("chiusura dei lavori... \n"); close(server_socket);//chiusura socket return(0); }//end server 46

47 Sol. Eser. n 3 client.c #include <stdio.h> #include <string.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <fcntl.h> #define MAXBUF 8192 int main(int argc, char * argv[]) { int client_socket,fd,portno; int retcode,letti; struct sockaddr_in server_addr; char message[maxbuf]; char *nomehost,*filename; if(argc < 4) { printf("usage:\n%s nomefile nomehost portno\n",argv[0]); return(0); } 47

48 filename = argv[1]; Sol. Esercizio N 4 client nomehost = argv[2]; printf("client (%d): fase di inizializzazione\n",getpid()); client_socket = socket(af_inet,sock_stream,0); if(client_socket == -1) {perror("aprendo il socket del cliente"); return(-1);} portno = atoi(argv[3]); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(portno); memcpy(&server_addr.sin_addr,(gethostbyname(nomehost)->h_addr), sizeof(server_addr.sin_addr)); retcode = connect(client_socket, (struct sockaddr *)&server_addr,sizeof(server_addr)); if(retcode == -1) {perror("connettendo il socket"); return(-1);} fd = open(filename,o_rdonly);//apertura file da trasferire if(fd == -1){ perror("aprendo il file"); return(-1);} 48

49 Sol. Eser. n 4 client.c do {//ciclo di lettura da file letti = read(fd,message,maxbuf); if(letti > 0) { /* solo se la lettura ha avuto buon fine */ //scrittura su socket retcode = write(client_socket,message,letti); if(retcode == -1) { perror("scrivendo il messaggio"); return(-1);} } } while (letti > 0); printf("client: ho inviato dati dal file %s\n",filename); close(fd); //chiusura file close(client_socket); //chiusura return(0); }//end client 49

50 - Fine Esercitazione - 50

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

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

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

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

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

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

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

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

(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

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

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

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

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

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

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

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

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

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

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

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

Esercitazioni Socket

Esercitazioni Socket Esercitazioni Socket Ping-Pong TCP Si realizzi una coppia di processi: il primo e' un server che pubblica un socket (SOCK_STREAM, TCP) ad un certo indirizzo (porta passata come parametro sulla riga di

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

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

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

*HVWLRQHDYDQ]DWDGHOOH6RFNHWLQ& ODSULPLWLYDVHOHFW

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

Dettagli

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Corso di Sistemi Operativi Esercitazioni

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

Dettagli

J+... J+3 J+2 J+1 K+1 K+2 K+3 K+...

J+... J+3 J+2 J+1 K+1 K+2 K+3 K+... Setup delle ConnessioniTCP Una connessione TCP viene instaurata con le seguenti fasi, che formano il Three-Way Handshake (perchè formato da almeno 3 pacchetti trasmessi): 1) il server si predispone ad

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

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 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 reti AA 2008/2009. Dott. Matteo Roffilli Ricevimento in ufficio dopo la lezione

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

Dettagli

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

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

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli CODICE Le fonti in cui si possono trovare tutorial o esempi di progetti utilizzati con Arduino si trovano nel sito ufficiale di Arduino, oppure nei forum di domotica e robotica. Il codice utilizzato per

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

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

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

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

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

SCUOLA DI INGEGNERIA DELL INFORMAZIONE. Corso di Piattaforme Software per la rete MODULO 2 Anno Accademico Prof. William FORNACIARI

SCUOLA DI INGEGNERIA DELL INFORMAZIONE. Corso di Piattaforme Software per la rete MODULO 2 Anno Accademico Prof. William FORNACIARI SCUOLA DI INGEGNERIA DELL INFORMAZIONE Corso di Piattaforme Software per la rete MODULO 2 Anno Accademico 2016-2017 Prof. William FORNACIARI SOLUZIONE D1 D2 D3 TOT Laureando SI NO NOTE PER LO SVOLGIMENTO

Dettagli

Creare un'elementare backdoor in C in ambiente UNIX

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

Dettagli

Programmazione dei socket con TCP #2

Programmazione dei socket con TCP #2 I Il Server e il Client si scambiano messaggi attraverso la rete mediante un dell API (Application Programming Interface) Telematica II 10. Esercitazione/Laboratorio 3 Server ports Clients user space Socket

Dettagli

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

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

Dettagli

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

Parte II: Reti di calcolatori Lezione 12

Parte II: Reti di calcolatori Lezione 12 Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15 Parte II: Reti di calcolatori Lezione 12 Giovedì 16-04-2015 1 Confronto architetture C/S e

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

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

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

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

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

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

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

C UDP in Windows p53 - variante 1

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

Dettagli

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

Il protocollo applicativo. Esempio di protocollo applicativo

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

Dettagli

Esercitazione. Formato di compitini e compiti: domande ed esercizi "closed book" G. Ferrari - Reti di calcolatori.

Esercitazione. Formato di compitini e compiti: domande ed esercizi closed book G. Ferrari - Reti di calcolatori. Esercitazione Formato di compitini e compiti: domande ed esercizi "closed book" Esercitazione - 1 Domanda 1 In una comunicazione di rete tra due host, quale è il client e quale è il server. Necessario:

Dettagli

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

Applicazioni distribuite. La programmazione di rete. Interfacce e protocolli. Protocollo applicativo Applicazioni distribuite Applicazione: un insieme di programmi coordinati per svolgere una data funzione applicativa. La programmazione di rete Introduzione alla programmazione di rete La connessione La

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

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

AXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema

AXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema AXO Architetture dei Calcolatori e Sistema Operativo programmazione di sistema Il sistema operativo Il Sistema Operativo è un insieme di programmi (moduli software) che svolgono funzioni di servizio nel

Dettagli

La programmazione di rete

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

Dettagli

Parte II: Reti di calcolatori Lezione 10

Parte II: Reti di calcolatori Lezione 10 Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Parte II: Reti di calcolatori Lezione 10 Giovedì 3-04-2014 1 Reti per la distribuzione

Dettagli

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

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

Dettagli

5 Esercitazione (svolta):

5 Esercitazione (svolta): 5 Esercitazione (svolta): Socket C con select Sviluppare un applicazione C/S in cui uno stesso server fornisce due servizi, richiesti da due tipi di client: il conteggio del numero di file contenuti in

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

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

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

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

Dettagli

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

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

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

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

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

Dettagli

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

Sistemi Operativi (M. Cesati)

Sistemi Operativi (M. Cesati) Sistemi Operativi (M. Cesati) Compito scritto del 16 luglio 2015 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare

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

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

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

Socket. [Pagina intenzionalmente vuota] 2: Socket (10 3 2003) slide 2:1/50 (p.24)

Socket. [Pagina intenzionalmente vuota] 2: Socket (10 3 2003) slide 2:1/50 (p.24) Socket [Pagina intenzionalmente vuota] (10 3 2003) slide 2:1/50 (p.24) Concetto di socket Disponibili su tutti i sistemi odierni Endpoint di canale (logico) di comunicazione tra processi, anche remoti

Dettagli

Comunicazione Connectionless o Datagram

Comunicazione Connectionless o Datagram Laboratorio Reti di Calcolatori (A.A. 2008-2009) Socket UDP Delfina Malandrino delmal@dia.unisa.it http://www.dia.unisa.it/professori/delmal/ 2 Comunicazione Connectionless o Datagram In una comunicazione

Dettagli

Esercizio 1. Esercizio 1

Esercizio 1. Esercizio 1 Esercizio 1 Un registratore di cassa registra su di un file binario alcuni dati relativi agli scontrini emessi. In particolare, tramite una struttura dati di nome scontrino, il registratore di cassa tiene

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