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

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

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

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

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

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

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

Dettagli

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

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

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

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

IPC Inter Process Communication

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

Dettagli

Esercitazione 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

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

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

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

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

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

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

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

(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

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

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

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

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

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

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

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

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

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

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

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

Dettagli

Guida all' uso dei sockets nella programmazione in C

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

Dettagli

Laboratorio di Reti di Calcolatori

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

Dettagli

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

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

Applicazione Client-Server con Server Concorrente Specifiche

Applicazione Client-Server con Server Concorrente Specifiche Applicazione Client-Server con Server Concorrente Specifiche Il progetto consiste nello sviluppo di un'applicazione client/server. Client e server devono comunicare tramite socket TCP.. Il server deve

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

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

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

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

Dettagli

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

Interazione con il DNS Conversioni di Nomi ed Indirizzi

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

Dettagli

Basi di network programming sotto Unix/Linux (draft version) Claudio Piciarelli

Basi di network programming sotto Unix/Linux (draft version) Claudio Piciarelli Basi di network programming sotto Unix/Linux (draft version) Claudio Piciarelli 20 dicembre 2004 ii Indice 1 Introduzione 1 1.1 Notazioni e terminologia..................................... 1 2 Un po di

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

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

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

Dettagli

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

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

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

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

Dettagli

Elementi di programmazione con interfaccia Socket

Elementi di programmazione con interfaccia Socket Struttura generale per stream sockets Socket() Well-Known Port Bind() Elementi di programmazione con interfaccia Socket Cenni di programmazione secondo la nuova interfaccia Socket definita nella RFC 2553

Dettagli

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

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

Dettagli

INGEGNERIA DEL WEB. VinX

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

Dettagli

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

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

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

Dettagli

Basic Sniffer Tutorial

Basic Sniffer Tutorial Basic Sniffer Tutorial LnZ Aspinall S.P.I.N.E. Research Group April 2, 2003 Abstract Con questo semplice esempio cerchero di mostrarvi l uso di base delle

Dettagli

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

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

Dettagli

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3

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

Dettagli

Le Opzioni per i Socket

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

Dettagli

Architettura e servizi Internet

Architettura e servizi Internet Architettura e servizi Internet Laboratorio di Sistemi Operativi Corso di Laurea in Informatica Università degli Studi dell'aquila A.A. 2011/2012 Romina Eramo materiale tratto da: Fazio Vincenzo e-mail:

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

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

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

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

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

Dettagli

Applicazione distribuita

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

Dettagli

Guida di Beej alla Programmazione di Rete

Guida di Beej alla Programmazione di Rete Guida di Beej alla Programmazione di Rete Usando Socket Internet Brian "Beej Jorgensen" Hall beej@beej.us Versione 2.4.5 5 Agosto 2007 Copyright 2007 Brian "Beej Jorgensen" Hall Traduzione di Fabrizio

Dettagli

Networking. Apertura di uno stream sulla rete: URL

Networking. Apertura di uno stream sulla rete: URL Networking Il networking in java è supportato nel package java.net, che permette, mediante classi e metodi opportuni, di trasferire informazioni attraverso la rete utilizzando: protocolli derivati dal

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

Programmazione dei socket di rete in GNU/Linux

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

Dettagli

INTRODUZIONE ALL INTERFACCIA SOCKET DI BERKELEY E.Mumolo IL MODELLO CLIENT/SERVER

INTRODUZIONE ALL INTERFACCIA SOCKET DI BERKELEY E.Mumolo IL MODELLO CLIENT/SERVER INTRODUZIONE ALL INTERFACCIA SOCKET DI BERKELEY E.Mumolo IL MODELLO CLIENT/SERVER NB : TCP/IP = famiglia di protocolli Il modello client/server e alla base della maggior parte delle applicazioni distribute

Dettagli

Riassunto Reti di calcolatori 2

Riassunto Reti di calcolatori 2 Riassunto Reti di calcolatori 2 by diverse fonti Si ringrazia Zazzu Indice generale Applicazioni...3 FTP File Transfer Protocol...4 Progettazione di un Servizio di Rete La Posta Elettronica...6 Pagine

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

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

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

Dettagli

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

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

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

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

Nuker v1.0 by ALwarrior

Nuker v1.0 by ALwarrior Nuker v1.0 by ALwarrior Avvertenze: Declino ogni responsabilità da un uso improprio di questa guida, a fini di danneggiare altri sistemi o provocare perdita di dati ad altri utenti. Introduzione: Cos è

Dettagli

Fondamenti di Internet e Reti. Antonio Capone, Matteo Cesana, Ilario Filippini, Guido Maier

Fondamenti di Internet e Reti. Antonio Capone, Matteo Cesana, Ilario Filippini, Guido Maier Fondamenti di Internet e Reti Antonio Capone, Matteo Cesana, Ilario Filippini, Guido Maier Fondamenti di Internet e Reti Programmazione Socket Antonio Capone, Matteo Cesana, Ilario Filippini, Guido Maier

Dettagli

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

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

Dettagli

LIBRERIA SOCKET EFUNZIONI DI NETWORKING. Versione 1.0

LIBRERIA SOCKET EFUNZIONI DI NETWORKING. Versione 1.0 LIBRERIA SOCKET EFUNZIONI DI NETWORKING Versione 1.0 Vito Asta, febbraio 2000 N.B. La presente dispensa accenna solo brevemente agli argomenti trattati e alle funzioni viste nel corso delle esercitazioni;

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

Una prima applicazione in C per l utilizzo delle socket

Una prima applicazione in C per l utilizzo delle socket Una prima applicazione in C per l utilizzo delle socket Richiamo sulle socket Socket in Windows (WinSock) Differenze tra sistemi operativi D. Gendarmi Socket API API: Application Programming Interface

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

SIMULAZIONE PROVA SCRITTA ESAME DI STATO. PER LA DISCIPLINA di SISTEMI

SIMULAZIONE PROVA SCRITTA ESAME DI STATO. PER LA DISCIPLINA di SISTEMI SIMULAZIONE PROVA SCRITTA ESAME DI STATO PER LA DISCIPLINA di SISTEMI In un azienda, costituita da due edifici, uno per gli uffici e l altro per l area produttiva con annesso magazzino, si vuole realizzare

Dettagli

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

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

Dettagli

Capitolo 2 - parte 3. Corso Reti ed Applicazioni Mauro Campanella

Capitolo 2 - parte 3. Corso Reti ed Applicazioni Mauro Campanella Capitolo 2 - parte 3 Corso Reti ed Applicazioni Mauro Campanella Agenda - Domain Name Sytem (DNS) - Le socket BSD per Internet M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2-3 pag. 2 DNS: Domain

Dettagli

Sicurezza delle reti. Monga. Ricognizione. Scanning Breve ripasso socket Network mapping Port Scanning NMAP. Le tecniche di scanning

Sicurezza delle reti. Monga. Ricognizione. Scanning Breve ripasso socket Network mapping Port Scanning NMAP. Le tecniche di scanning Sicurezza dei sistemi e delle 1 Mattia Dip. di Informatica Università degli Studi di Milano, Italia mattia.monga@unimi.it Port Lezione V: Scansioni Port a.a. 2015/16 1 cba 2011 15 M.. Creative Commons

Dettagli

Processi in Linux. Stru/ura file eseguibili

Processi in Linux. Stru/ura file eseguibili SISTEMI OPERATIVI Processi in Linux Stru/ura file eseguibili» ELF - Executable and Linking Format formato di default degli eseguibili in Linux definizione nel file include » StruGura un header contenente

Dettagli

Digressione: man 2...

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

Dettagli

Il livello di Trasporto del TCP/IP

Il livello di Trasporto del TCP/IP Il livello di Trasporto del TCP/IP Il compito del livello transport (livello 4) è di fornire un trasporto efficace dall'host di origine a quello di destinazione, indipendentemente dalla rete utilizzata.

Dettagli

Corso di Laboratorio di Sistemi Operativi

Corso di Laboratorio di Sistemi Operativi Corso di Laboratorio di Sistemi Operativi Lezione 5 Alessandro Dal Palù email: alessandro.dalpalu@unipr.it web: www.unipr.it/~dalpalu Processi in Unix Approfondimenti: http://gapil.gnulinux.it/download/

Dettagli

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

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

Dettagli

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

2. I THREAD. 2.1 Introduzione

2. I THREAD. 2.1 Introduzione 2. I THREAD 2.1 Introduzione Il tipo di parallelismo che è opportuno avere a disposizione nelle applicazioni varia in base al grado di cooperazione necessaria tra le diverse attività svolte in parallelo:

Dettagli

Processi UNIX. I Processi nel SO UNIX. Gerarchie di processi UNIX. Modello di processo in UNIX

Processi UNIX. I Processi nel SO UNIX. Gerarchie di processi UNIX. Modello di processo in UNIX Processi UNIX I Processi nel SO UNIX UNIX è un sistema operativo multiprogrammato a divisione di tempo: unità di computazione è il processo Caratteristiche del processo UNIX: processo pesante con codice

Dettagli

Funzioni. Il modello console. Interfaccia in modalità console

Funzioni. Il modello console. Interfaccia in modalità console Funzioni Interfaccia con il sistema operativo Argomenti sulla linea di comando Parametri argc e argv Valore di ritorno del programma La funzione exit Esercizio Calcolatrice 2, presente in tutti i programmi

Dettagli

Ret e i Inf n o f rm r a m t a ich c e Terza esercitazione

Ret e i Inf n o f rm r a m t a ich c e Terza esercitazione Reti Informatiche Terza esercitazione Introduzione Richiami di Programmazione C Differenze principali C/C++ 2 Definizioni di variabili Le variabili possono essere definite solo all inizio di un blocco

Dettagli

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

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

Dettagli

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

Opzioni per le Socket

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

Dettagli