Inter-process communication: socket
|
|
- Sofia Carraro
- 8 anni fa
- Visualizzazioni
Transcript
1 Le Socket
2 Inter-process communication: socket Abbiamo visti alcune tipologie di Inter-process communication: Anonymous pipes FIFOs o named pipes Le socket di comunicazione si pongono nell'ipc per realizzare: Comunicazioni tra processi sulla stessa macchina Comunicazioni tra processi sparsi nella rete Caratteristiche Si basano su file speciali Garantiscono connessioni affidabili e non Più complesse da realizzare, es. open() sfrutta più system call 2
3 Socket Originariamente sviluppate da BSD ma adottate in tutte le famiglie Unix. Lo scopo creare IPC trasparenti capaci di sfruttare diversi protocolli. Paradigma client-server Il server crea un socket il cui nome è noto. Il client comunica con il server tramite una connessione al suo socket. Se la connessione ha successo si hanno due descrittori Uno per il client per inviare/ricevere le informazioni Uno per il server per ricevere/inviare le informazioni Ad ogni connessione, il server può reagire: In modo sequenziale (è lui che comunica direttamente) In maniera concorrente (crea un figlio che la gestisca) 3
4 Socket La creazione di una socket non è un operazione atomica. Server socket() /* istanzia la socket */ bind() /* setta il nome (sarà noto) della socket */ listen() /* ascolta la coda delle connessioni */ accept() /* gestisce la prossima connessione */ Client socket() /* istanzia la socket */ connect() /* connette ad un server per mezzo del nome */ Istanziare una socket il kernel alloca il file speciale per lo scambio dei dati. Si definisce il tipo di connessione: affidabile o non affidabile 4
5 Socket: schema generale 5
6 Socket: come collegare due processi - Server Passo 1: creare un file ricevitore (socket) ottenendo il file descriptor Il sistema crea la socket a cui è possibile riferirsi con il descrittore sdf 6
7 Socket: come collegare due processi - Server Passo 1: creare un file ricevitore (socket) ottenendo il file descriptor Passo 2: associare al socket un indirizzo di tipo: AF_UNIX, AF_INET mysocket rappresenta il nome che dovrà essere noto per connettersi Dipende dal dominio di connessione (ce ne sono altri): AF_UNIX: per connessioni tra processi sulla stessa macchina AF_INET: per connessioni tra processi sparsi in rete 7
8 Socket: come collegare due processi - Server Passo 1: creare un file ricevitore (socket) ottenendo il file descriptor Passo 2: associare al socket un indirizzo di tipo: AF_UNIX, AF_INET Passo 3: specificare che siamo disposti ad accettare connessioni 8
9 Socket: come collegare due processi - Server Passo 1: creare un file ricevitore (socket) ottenendo il file descriptor Passo 2: associare al socket un indirizzo di tipo: AF_UNIX, AF_INET Passo 3: specificare che siamo disposti ad accettare connessioni Passo 4. bloccarsi in attesa di connessioni da parte di altri processi Da questo momento il server si mette in ascolto delle connessioni in entrata (il processo viene sospeso) 9
10 Socket: come collegare due processi - Client Passo 1: creare un file ricevitore (socket) ottenendo il file descriptor 10
11 Socket: come collegare due processi - Client Passo 1: creare un file ricevitore (socket) ottenendo il file descriptor Passo 2: collegarsi al socket del server Il nome deve essere quello utilizzato nella chiamata bind() del server 11
12 Socket: come collegare due processi - Client Passo 1: creare un file ricevitore (socket) ottenendo il file descriptor Passo 2: collegarsi al socket del server Il nome deve essere quello utilizzato nella chiamata bind() del server Avviene il match fra accept/connect ed un nuovo socket viene creato 12
13 Socket: come collegare due processi - Server accept ritorna al server il descrittore del nuovo socket usabile per il resto della comunicazione con il client 13
14 Socket: come collegare due processi - Server accept ritorna al server il descrittore del nuovo socket usabile per il resto della comunicazione con il client il server si può rimettere in attesa di connessioni da altri client con un altra accept 14
15 Socket - creazione Dominio - indica dove risiedono il server ed il client. Alcuni: AF_UNIX: client e server sono sulla stessa macchina AF_INET: client e server sono ovunque in Internet Tipo - determina il tipo di comunicazione server/client. Due principali: SOCK_STREAM: affidabile, preserva l'ordine di invio dei dati, basata su stream di byte di lunghezza variabile SOCK_DGRAM: inaffidabile, senza una connessione fissa, basata su messaggi di lunghezza variabile Protocollo - specifica le regole di scambio messaggi. Caratteristiche: protocolli datagram, come UDP, che non sono affidabili protocolli stream, come TCP/IP, che assicurano la ricezione dei dati preservandone l'ordine 15
16 Socket system call sys/types.h sys/socket.h /* per socket() */ sys/un.h /* per dominio AF_UNIX */ netinet/in.h arpa/inet.h netdb.h /* per dominio AF_INET */ int socket (int domain, int type, int protocol) domain specifica il dominio (AF_UNIX, AF_INET, etc.) type specifica il tipo di comunicazione(sock_stream, SOCK_DGRAM) protocol specifica il protocollo da utilizzare Tipicamente 0 per indicare che si vuole utilizzare il protocollo di default per la coppia domain/type in questione Ritorno restituisce un descrittore di file associato al nuovo socket -1 se si è verificato un errore 16
17 Socket - esempio Comunicazione via socket AF_UNIX (tralasciamo gestione errori) #include <sys/un.h> /* ind AF_UNIX */ #define SOCKNAME./mysock int main (void){ int fd_skt, fd_c; struct sockaddr_un sa; /* indirizzo AF_UNIX */ // creazione indirizzo strcpy(sa.sun_path, SOCKNAME); sa.sun_family = AF_UNIX; /* segue*/ } sockaddr_un è la struttura utilizzata in fase di bind. La sua definizione è: struct sockaddr_un { unsigned short sun_family; /* AF_UNIX */ char sun_path[108]; } 17
18 Socket esempio di creazione server/client E' possibile creare nello stesso file sia il client che il server int main (void){ int fd_skt, fd_c; struct sockaddr_un sa; /* ind AF_UNIX */ strcpy(sa.sun_path, SOCKNAME); sa.sun_family = AF_UNIX; if (fork()!=0) { /* padre, server */ fd_skt = socket(af_unix,sock_stream,0); /* segue */ }else { /* figlio, client */ fd_skt = socket(af_unix,sock_stream,0); /* segue */ } } 18
19 Socket system call bind() int bind (int sock_fd, const struct sockaddr *sa, socklen_t sa_len) Caratteristiche associa alla socket con descrittore sock_fd uno specifico indirizzo, puntato da sa, di lunghezza sa_len Tipicamente con AF_UNIX si deve indicare un file che non esiste sa_len è passato come sizeof (struct sockaddr) Ritorno 0 in caso di successo -1 errore con errno settato 19
20 Socket esempio di creazione server/client Aggiungiamo la chiamata a bind int main (void){ int fd_skt, fd_c; struct sockaddr_un sa; /* ind AF_UNIX */ strcpy(sa.sun_path, SOCKNAME); sa.sun_family = AF_UNIX; if (fork()!=0) { /* padre, server */ fd_skt = socket(af_unix,sock_stream,0); bind(fd_skt, (struct sockaddr *) &sa, sizeof(sa)); /* segue */ }else{ /* figlio, client */ fd_skt = socket(af_unix,sock_stream,0); /* segue */ } } 20
21 Socket system call listen() int listen(int sockfd, int backlog) Caratteristiche usata da un server connection-oriented per indicare che desidera ricevere connessioni sulla socket locale sockfd backlog indica il numero massimo di richieste di connessioni che possono essere messe in coda. In genere si utilizza SOMAXCONN definito in sys/socket.h Ritorno 0 in caso di successo -1 errore con errno settato 21
22 Socket esempio di creazione server/client Aggiungiamo la chiamata a listen int main (void){ int fd_skt, fd_c; struct sockaddr_un sa; /* ind AF_UNIX */ strcpy(sa.sun_path, SOCKNAME); sa.sun_family = AF_UNIX; if (fork()!=0) { /* padre, server */ fd_skt = socket(af_unix,sock_stream,0); bind(fd_skt, (struct sockaddr *) &sa, sizeof(sa)); listen(fd_skt,somaxconn) /* segue */ }else{ /* figlio, client */ /* segue */ } } 22
23 Socket system call accept() int accept (int sock_fd, const struct sockaddr * sa, socklen_t *sa_len); Caratteristiche usata per attendere una richiesta di connessione sul socket sock_fd rimuove la richiesta dalla coda e carica l'indirizzo del client in sa e la sua lunghezza in sa_len se non esistono richieste di connessione pendenti, il processo è sospeso Ritorno un'altra socket descriptor con le stesse proprietà di sock_fd, connessa con il client -1 errore con errno settato 23
24 Socket esempio di creazione server/client Aggiungiamo la chiamata a accept int main (void){ int fd_skt, fd_c; struct sockaddr_un sa; /* ind AF_UNIX */ strcpy(sa.sun_path, SOCKNAME); sa.sun_family = AF_UNIX; if (fork()!=0) { /* padre, server */ fd_skt = socket(af_unix,sock_stream,0); bind(fd_skt, (struct sockaddr *) &sa, sizeof(sa)); listen(fd_skt,somaxconn) fd_c = accept(fd_skt,null,0); /* segue */ }else{ /* figlio, client */... } 24
25 Socket system call connect() int connect(int sock_fd, const struct sockaddr *sa, socklen_t sa_len); Caratteristiche usata da un client per connettere a sock_fd alla raggiungibile da sa invia al server l'indirizzo locale a cui inviare la risposta, assegnando una porta libera locale Sospende il processo fino a che la connessione non è stata stabilita Ritorno 0 in caso di connessione stabilita -1 se la socket non esiste o la coda è piena. errno viene settato 25
26 Socket esempio di creazione server/client Aggiungiamo la chiamata a connect #define N }else{ /* figlio, client */ fd_skt=socket(af_unix,sock_stream,0); while (connect(fd_skt,(struct sockaddr*)&sa, sizeof(sa)) == -1 ) { if ( errno == ENOENT ) sleep(1); /* la socket non esiste ancora */ else exit(exit_failure); } write(fd_skt, Hallo!, 7); read(fd_skt, buf, N); printf( Client got: %s\n, buf) ; close(fd_skt); exit(0);... 26
27 Socket esempio di creazione server/client #define N if (fork()!=0) { /* padre, server */ fd_skt = socket(af_unix,sock_stream,0); bind(fd_skt,(struct sockaddr *)&sa, sizeof(sa)); listen(fd_skt,somaxconn); fd_c = accept(fd_skt, NULL,0); read(fd_c, buf, N); printf( Server got: %s\n,buf) ; write(fd_c, Bye!, 5); close(fd_skt); close(fd_c); exit(0); }... 27
28 Socket esempio finale Compilazione bash:~$ gcc -Wall -pedantic clserv.c -o clserv Esecuzione bash:~$./clserv -- un po di attesa Server got: Hallo! Client got: Bye! bash:~$ 28
29 Socket - commenti Nell esempio visto manca completamente la gestione degli errori (deve essere effettuata al solito modo) Una volta creata la connessione si possono leggere e scrivere i dati come con una pipe Si può fare molto di più dell esempio: gestire più client contemporaneamente indirizzi AF_INET: comunicazione con macchine diverse usare comunicazioni connectionless (datagram) senza creare una connessione permanente gestire macchine con diversi endians gestire dettagli del comportamento dei socket, accedere al database dei nomi (eg. 29
30 Socket: gestire più client Soluzioni tipiche per soddisfare più richieste: Utilizzare un server multithreaded: Un thread dispatcher che si mette in attesa ripetutamente su accept() per una nuova connessione ogni volta che la connessione è stata stabilita viene creato un nuovo thread worker Il thread worker si mette in attesa con read() dei messaggi in arrivo solo dal client relativo ad una particolare connessione Utilizzare un server sequenziale e select(): Permette di capire quale file descriptor è pronto 30
31 Socket Server Iterativo Vs Concorrente int sockfd, newsockfd;... if ( (sockfd = socket(...) ) < 0) /* err */ if ( (bind(sockfd, my_addr, my_ll) < 0) /* err */ if ( (listen(sockfd, 5) < 0) /* err */ int sockfd, newsockfd;... if ( (sockfd = socket(...) ) < 0) /* err */ if ( (bind(sockfd, my_addr, my_ll) < 0) /* err */ if ( (listen(sockfd, 5) < 0) /* err */ for( ; ; ) { newsockfd=accept(sockfd,cli_addr,cli_ll); if (newsockfd < 0) /* accept error */ read(newsockfd,...); write(newsockfd,...); close (newsockfd); } for( ; ; ) { newsockfd=accept(sockfd,cliaddr,clill); if (newsockfd < 0) /* accept error */ if (fork() == 0) { /* child */ close(sockfd); read(newsockfd,...); write(newsockfd,...); exit (0); } close (newsockfd); /* parent */ } 31
32 Socket Server & select() System call select() definita in sys/select.h permette di aspettare contemporaneamente file descriptor multipli (con timeout) int select(int nfds, /* # of file descriptors */ fd_set *rdset, /* Read descriptor set */ fd_set *wrset, /* Write descriptor set */ fd_set *errset, /* Exception descriptor set */ struct timeval *timeout); /* Timeout value */ Parametri di input nfsd è la dimensione massima dei sottoinsiemi *...set sono i sets dei file descriptors realizzati tramite mappe di bit timeout è il timeout di attesa (opzionale) Parametri di output 0 timeout; -1 errore (see errno); k < 0 numero di descriptors pronti per l'i/o Modifica fd_set ponendo a 1 i bit relativi ai file descriptors pronti per l'i/o 32
33 Socket Server & select() Semantica Si blocca finchè uno dei descrittori specificati ha dati rilevanti. In particolare: un descrittore fd atteso per la lettura (rdset) è considerato pronto quando una read su fd non si blocca, quindi anche se è stato chiuso con EOF la read non si blocca un descrittore fd atteso per la scrittura (wrset) è considerato pronto quando una write su fd non si blocca un descrittore fd atteso per eccezioni (errset) è considerato pronto quando si è verificato un errore all uscita della select() i set sono modificati per indicare chi è pronto. 33
34 Socket Server & select() Come specificare i set rdset, wrset, errset sono maschere di bit e vengono manipolate usando delle macro: FD_ZERO(&fdset) azzera la maschera fdset FD_SET(fd,&fdset) mette a 1 il bit corrispondente al file descriptor fd nella maschera fdset FD_CLR(fd,&fdset) mette a 0 il bit corrispondente al file descriptor fd nella maschera fdset FD_ISSET(fd,&fdset) vale 1 se il bit corrispondente al file descriptor fd nella maschera fdset era a 1 e zero altrimenti 34
35 Socket Server & select() Come specificare i set: esempio 1. tipicamente si azzera un set e poi si mettono a 1 i bit che interessano: 2. creare la maschera di attesa per il primo fra fd1 e fd2 pronto in lettura fd_set rdset; FD_ZERO(&rdset); FD_SET(fd1,&rdset); FD_SET(fd2,&rdset); Come controllare chi è pronto? non c è modo di avere la lista, si devono testare ciascuno con FD_ISSET if (FD_ISSET(fd1,&rdset)) read(fd1,buf,n); else if (FD_ISSET(fd2,&rdset)) read(fd2,buf,n);... 35
36 Socket Server & select(): il server static void run_server(struct sockaddr * psa) { int fd_sk, /* socket di connessione */ fd_c, /* socket di I/O con un client */ fd_num=0, /* max fd attivo */ fd; /* indice per verificare risultati select */ char buf[n]; /* buffer messaggio */ fd_set set, /* l insieme dei file descriptor attivi */ rdset; /* insieme fd attesi in lettura */ int nreaded; /* numero caratteri letti */... } 36
37 Socket Server & select(): il server static void run_server(struct sockaddr * psa) { int fd_sk, fd_c, fd_num=0, fd; char buf[n]; fd_set set, rdset; int nreaded; fd_sk = socket(af_unix, SOCK_STREAM, 0); bind(fd_sk,(struct sockaddr *)psa, sizeof(*psa)); listen(fd_sk, SOMAXCONN); /* manteniamo il massimo indice di descrittore attivo in fd_num */ if (fd_sk > fd_num) fd_num = fd_sk; FD_ZERO(&set); FD_SET(fd_sk,&set);... } 37
38 Socket Server & select(): il server static void run_server(struct sockaddr * psa) { int fd_sk, fd_c, fd_num=0, fd; char buf[n]; fd_set set, rdset; int nreaded; fd_sk = socket(af_unix, SOCK_STREAM, 0); bind(fd_sk,(struct sockaddr *)psa, sizeof(*psa); listen(fd_sk, SOMAXCONN); if (fd_sk > fd_num) fd_num = fd_sk; /* max num descrittore attivo*/ FD_ZERO(&set); FD_SET(fd_sk,&set); while (TRUE) { rdset = set; /* re-init x ogni ciclo dato che select lo modifica */ /* nota fd_num + 1: vogliamo il N max di descrittori attivi, non l indice massimo */ if (select(fd_num + 1, &rdset, NULL, NULL, NULL) == -1)) /* gestione errore */... } 38
39 Socket Server & select(): il server static void run_server(struct sockaddr * psa) {... /* continua dal while */ else { /* select OK */ for (fd = 0; fd < fd_num; fd++) { if (FD_ISSET(fd, &rdset)) { if (fd == fd_sk) { /* sock connect pronto */ fd_c = accept(fd_sk, NULL,0); FD_SET(fd_c, &set); if (fd_c > fd_num) fd_num = fd_c; } else { /* sock I/0 pronto */ nreaded = read(fd, buf, N); if (nreaded == 0 ) { /* EOF client finito */ FD_CLR(fd, &set); fd_num = aggiorna(&set); close(fd);... } 39
40 Socket Server & select(): il server static void run_server(struct sockaddr * psa) {... /* continua dal while */ else { /* nread!=0 */ printf( Server got: %s\n, buf) ; write(fd, Bye!, 5); } }... } /* chiude fino al while() */ } La parte del server termina qui. Vediamo il client... 40
41 Socket Server & select(): il client static void run_client(struct sockaddr * psa) { /* I figli sono generati da fork() */ if (fork() ==0 ) { /* figlio, client */ int fd_skt; char buf[n]; fd_skt=socket(af_unix, SOCK_STREAM, 0); while (connect(fd_skt,(struct sockaddr*)&sa, sizeof(sa)) == -1 ) { if ( errno == ENOENT ) sleep(1); else exit(exit_failure); } write(fd_skt, Hallo!,7); read(fd_skt,buf,n); printf( Client got: %s\n, vbuf) ; close(fd_skt); exit(exit_success); } } 41
42 Socket Server & select(): main di esecuzione... #include <sys/select.h> #include <sys/un.h> /* ind AF_UNIX */ #define SOCKNAME./mysock" #define N 100 int main (void){ int i; struct sockaddr_un sa; /* ind AF_UNIX */ strcpy(sa.sun_path, SOCKNAME); sa.sun_family=af_unix; for(i=0; i< 4; i++) } run_client(&sa); /* attiva un client*/ run_server(&sa); /* attiva il server */ return 0; 42
43 Socket esempio finale Compilazione bash:~$ gcc -Wall -pedantic clserv.c -o clserv Esecuzione bash:~$./clserv Server got: Hallo! Server got: Hallo! Client got: Bye! Client got: Bye! Server got: Hallo! Server got: Hallo! Client got: Bye! Client got: Bye! Tuttavia il server rimane attivo... 43
44 Socket Server & select(): considerazioni Ancora qualcosa un modo per terminare il server è utilizzando i segnali Es.: SIGINT CTRL-C È possibile personalizzare la gestione del segnale in modo da farlo terminare gentilmente Rimandiamo quindi ai segnali... Sono disponibili altre SC per il controllo dei descrittori pronti pselect poll... 44
45 Socket & internet AF_INET I socket con indirizzi AF_UNIX possono essere usati solo sulla stessa macchina Ci sono molte altre famiglie di indirizzi Accenneremo ad AF_INET famiglia di indirizzi che permette di far comunicare i socket su Internet vedremo come usarli (assumeremo noti i dettagli su come funziona Internet) Prima vedremo quanto sia importante tenere in considerazione come i dati viaggiano tra i sistemi 45
46 Big and Little endian Comunicazione tra macchine diverse Se comunichiamo una sequenza di byte fra macchine diverse: La comunicazione preserva l ordine dei byte (quindi non ci sono problemi con le stringhe) Ci sono però due modi di rappresentare i numeri binari; Es.: D04C esadecimale (2 byte) 46
47 Big and Little endian Comunicazione tra macchine diverse Quindi se comunico D04C esadecimale da little endian a big endian Verrà inviato prima 4C e poi D0 La macchina ricevente interpreta il primo come byte più significativo e il secondo come byte meno significativo Quindi il numero ricevuto sarò 4CD0 47
48 Big and Little endian Comunicazione tra macchine diverse È necessario avere un ordine dei byte indipendente dalla macchina e usare sempre quello per gli scambi È il network byte order Network byte order La macchina mittente converte dalla sua Rappresentazione da host byte order al network byte order Il ricevente fa l inverso È necessario farlo solo per dati binari grezzi non per dati già in formato standard (es. JPEG) 48
49 Network byte order Definite in arpa/inet.h uint16_t htons (uint16_t hostnum); /* TO NETWORK BYTE ORDER */ uint32_t htonl (uint32_t hostnuml); /* TO NETWORK BYTE ORDER */ uint16_t ntohs (uint16_t netnum); /* TO HOST BYTE ORDER */ uint32_t ntohl (uint32_t netnuml); /* TO HOST BYTE ORDER */ Esempio stampare i 2 byte che rappresentano D04C in ordine crescente in host byte order in network byte order 49
50 Network byte order: esempio #include <arpa/inet.h> #include <stdio.h> int main (void) { uint16_t n = 0xD04C, nnet; unsigned char* p; p = (unsigned char *) &n; printf( %x %x \n, *p, *(p+1)); /* host order */ nnet = htons(n); p = (unsigned char *) &nnet; printf( %x %x \n, *p, *(p+1)); /* net order */ return 0; } 50
51 Network byte order: esempio Compilazione bash:~$ gcc -Wall -pedantic endian.c -o endian Esecuzione bash:~$./endian 4c d0 d0 4c bash:~$ Compilato su AMD athlon XP /proc/cpuinfo AMD, x86 sono little endian Il network byte order è big endian (dai vecchi VAX) 51
52 Indirizzi AF_INET Sono indirizzi fomati da: un identificativo della macchina (indirizzo IPv4) numero a 32 bit assegnato ad un interfaccia di rete sulla macchina vengono scritti in dotted notation a gruppi di 4 byte convertiti in decimale separati da punti (es ) ognuno ha anche un nome simbolico (es. un identificativo della porta all interno della macchina è un numero a 16 bit identifica un servizio. Es: 80 porta server HTTP 21 porta server ftp etc... 52
53 Indirizzi AF_INET Strutture definita in netinet/in.h struct sockaddr_in { sa_family_t sin_family; /* AF_INET, etc */ in_port_t sin_port; /* numero di porta (uint16_t) */ struct in_addr sin_addr; /* indirizzo IPv4 */ }; struct in_addr { }; in_addr_t s_addr; /* indirizzo (uint32_t) */ sin_addr Identifica l'indirizzo dell'host sin_port Identifica la porta di ascolto Le strutture dati verranno utilizzate nella chiamata a bind() 53
54 Indirizzi AF_INET: esempio /* vogliamo rappresentare porta 80*/ struct sockaddr_in sa; sa.sin_family = AF_INET; /* numero di porta (uint16_t) deve essere in network byte order */ sa.sin_port = htons(80); /* indirizzo IPv4 (uint32_t) deve essere in network byte order */ sa.sin_addr.s_addr = htonl(216<<24) + htonl(119<<16) + htonl(125<<8) + htonl(70); /* Variante dell'ultimo punto */ sa.sin_addr.s_addr = inet_addr( "); 54
55 Indirizzi AF_INET: funzioni utili Alcune funzioni utili: In arpa/inet.h sono dichiarate alcune funzioni utili per manipolare indirizzi Internet. unsigned long int inet addr (const char *name) converte name (es ) in network byte order Restituisce -1 se l'indirizzo non è valido. char *inet ntoa (struct in_addr addr) converte addr (è in network byte order) in numeri e punti. inet_ntop, inet_pton sono la loro generalizzazione e funzionano anche con IPv6 55
56 Indirizzi AF_INET: esempio HTTP /* vogliamo ottenere la pagina HTTP che corrisponde a chiedendola direttamente al web server di porta 80*/ #define REQUEST GET / HTTP/1.0\r\n\r\n" /* DEFAULT HTTP GET REQUEST */ int main (void) { struct sockaddr_in sa; int fd_skt, nread; char buf[1024]; sa.sin_family = AF_INET; sa.sin_port = htons(80); /* DEFAULT HTTP SERVER PORT */ sa.sin_addr.s_addr = inet_addr( "); /* CONNECT TO YAHOO WEB SERVER*/ fd_skt =socket(af_inet, SOCK_STREAM, 0); connect(fd_skt, (struct sockaddr*)&sa, sizeof(sa)); write(fd_skt, REQUEST, strlen(request)); /* SEND HTTP REQUEST */ nread = read(fd_skt, buf, sizeof(buf)); write(1, buf, nread); /* WRITE TO STDOUT */ close(fd_skt); return 0; } // Nota: la gestione degli errori è stata omessa 56
57 Socket esempio finale Compilazione bash:~$ gcc -Wall -pedantic getpage.c -o getp Esecuzione bash:~$./getp HTTP/ Moved Permanently Date: Mon 20 Mar :52:34 GMT Location: Connection: close Content-Type: text/html The document has moved... bash:~$ 57
58 Indirizzi AF_INET: nomi mnemonici Di solito non si usano i numeri ma dei nomi mnemonici: etc. È possibile convertire i nomi mnemonici in dotted notation usando un database distribuito (DNS) accessibile da C con getaddrinfo È possibile recuperare in formato stringa gli eventuali errori generati dalla chiamata a getaddrinfo con la chiamata a gai_strerror int gethostname(char *name, size_t namelen) È possibile ottenere il nome mnemonico pubblico della macchina su cui stiamo girando con gethostname namelen è la lunghezza massima del vettore name 58
SC per Inter Process Comminication. Comunicazione fra macchine diverse: socket
SC per Inter Process Comminication Comunicazione fra macchine diverse: socket 1 Sockets File speciali utilizzati per connettere due o più processi con un canale di comunicazione i processi possono risiedere
DettagliSC 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
DettagliCenni 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
DettagliEsercitazione [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
DettagliI 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
DettagliSocket. 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
DettagliSocket TCP. prima parte
Socket TCP prima parte Cosa cambia: socket int fd = socket(pf_inet, SOCK_STREAM, 0); if (fd
DettagliCOMUNICAZIONE 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
DettagliUna 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
DettagliI/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
DettagliProgram 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
DettagliSocket 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(...)
DettagliSocket. 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
DettagliIPC 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
DettagliInterazione (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
DettagliLaboratorio 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
DettagliHTTP 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
DettagliEsempio 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
Dettagli10.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
Dettaglirsystem 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..................................................................................
DettagliIntroduzione 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
DettagliIntroduzione alla programmazione in C
Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale
DettagliProgram m azione di Sistem a 6a
Program m azione di Sistem a 6a Basati sui lucidi per il corso di Laboratorio di Sistemi Operativi tenuto da Paolo Baldan presso l'università Ca' Foscari di Venezia, anno accademico 2004/ 2005. Parte di
DettagliIntroduzione al Linguaggio C
Introduzione al Linguaggio C File I/O Daniele Pighin April 2009 Daniele Pighin Introduzione al Linguaggio C 1/15 Outline File e dati Accesso ai file File I/O Daniele Pighin Introduzione al Linguaggio C
Dettagli(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ&
(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ& 3ULPRHVHUFL]LR6RFNHWVWUHDPFRQULGLUH]LRQH Si progetti un applicazione distribuita Client/Server per una rete di workstation UNIX (BSD oppure System V). In particolare,
DettagliIPC 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
DettagliLab. 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 -
DettagliEsercitazione [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
DettagliEsercitazione 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
DettagliSocket 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
DettagliCreare 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
DettagliInterprocess 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
DettagliEsercitazione [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
DettagliReti (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
DettagliProgrammazione 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
DettagliProgrammazione 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
DettagliINTERNET 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
DettagliEsercitazione [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
DettagliL 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
DettagliLaboratorio 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
DettagliScrittura 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
DettagliEsercizio 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
DettagliDATAGRAM 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
DettagliGestione 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
DettagliEsercitazione [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
Dettagli2.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
DettagliLABORATORIO 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,
DettagliLaboratorio di Sistemi Operativi
Le FIFO pipe vs fifo la pipe può essere usata solo tra processi "imparentati" (che hanno un antenato comune che ha creato la pipe) la fifo consente di scambiare dati tra processi qualsiasi 2 1 FIFO (named
DettagliTransmission Control Protocol
Transmission Control Protocol Franco Callegati Franco Callegati IC3N 2000 N. 1 Transmission Control Protocol - RFC 793 Protocollo di tipo connection-oriented Ha lo scopo di realizzare una comunicazione
DettagliProgrammazione 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
Dettagliappunti delle lezioni Architetture client/server: applicazioni client
Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture client/server: applicazioni client 1 Architetture client/server: un esempio World wide web è un esempio particolarmente
DettagliControllo Winsock di Visual Basic
Controllo Winsock di Visual Basic Il controllo Winsock, non visibile all'utente, consente di accedere ai servizi di rete TCP e UDP. Per creare applicazioni client o server non è necessario conoscere in
DettagliSocket Programming. Socket Programming. Università di Palermo
Socket Programming Socket Programming 1 Architettura Processo (Messagi) HTTP, SMTP, DNS, IMAP,... Trasporto (Messagi) TCP UDP Rete (Pacchetti) ARP IP ICMP Data link (Frames) Ethernet, FDDI, 802.11,...
DettagliTECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI
TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI Confronto tra ISO-OSI e TCP/IP, con approfondimento di quest ultimo e del livello di trasporto in cui agiscono i SOCKET. TCP/IP
DettagliAltri tipi di connessione
Altri tipi di connessione Francesca Martelli f.martel@di.unipi.it Socket Un socket è una connessione a una porta su un computer remoto, che è usata per scambiare informazioni con comandi HTTP Supponiamo
DettagliI file di dati. Unità didattica D1 1
I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità
DettagliLuca 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
DettagliSistemi Operativi: Programmazione di Sistema
Corso di Sistemi Operativi: Programmazione di Sistema Corso di Laurea in Informatica, Università di Firenze Anno accademico 2011/2012 Prof. Luca Ferrari e-mail: ferrari@dsi.unifi.it telefono: 055 4237454
DettagliStrutture. 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
Dettagli1. 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
DettagliGli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori
Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine
DettagliMODELLO 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
DettagliSincronizzazione e comunicazione tra processi in Unix. usati per trasferire ad un processo l indicazione che un determinato evento si è verificato.
Processi parte III Sincronizzazione e comunicazione tra processi in Unix Segnali: usati per trasferire ad un processo l indicazione che un determinato evento si è verificato. Pipe: struttura dinamica,
DettagliFunzioni in C. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni
DettagliInizializzazione degli Host. BOOTP e DHCP
BOOTP e DHCP a.a. 2002/03 Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/~auletta/ Università degli studi di Salerno Laurea e Diploma in Informatica 1 Inizializzazione degli Host Un
DettagliUniversità 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
DettagliIl 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
DettagliLaboratorio 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
DettagliInternetworking 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
DettagliSistemi Operativi (modulo di Informatica II)
Sistemi Operativi (modulo di Informatica II) La comunicazione tra processi Patrizia Scandurra Università degli Studi di Bergamo a.a. 2008-09 Sommario Processi cooperanti La comunicazione tra processi Necessità
DettagliFiles, File I/O, File Sharing. Franco Maria Nardini
Files, File I/O, File Sharing Franco Maria Nardini UNIX file types UNIX non richiede una struttura interna del file. Dal punto di vista del sistema operativo c e un solo tipo di file. Struttura e interpretazione
DettagliLaboratorio di. Reti Informatiche. Corso di Laurea Triennale in Ingegneria Informatica A.A. 2016/2017. Ing. Niccolò Iardella
Laboratorio di Reti Informatiche Corso di Laurea Triennale in Ingegneria Informatica A.A. 2016/2017 Ing. Niccolò Iardella niccolo.iardella@unifi.it 1 Esercitazione 5 Programmazione con i socket Parte 2
DettagliEsercizio sulla gestione di file in Unix
Esercizio sulla gestione di file in Unix 1 Esercizio Si vuole realizzare un programma C che, utilizzando le system call di Unix, realizzi uno schema di comunicazione tra due processi (padre e figlio) mediante
DettagliIntroduzione 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
Dettagliunsigned 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=
DettagliReti di Telecomunicazioni Mobile IP Mobile IP Internet Internet Protocol header IPv4 router host indirizzi IP, DNS URL indirizzo di rete
IP Analizziamo con sufficiente dettaglio il sistema denominato IP, usato per consentire a due computer mobili di spostarsi liberamente in altre reti pur mantenendo lo stesso indirizzo IP. In particolare,
DettagliInterazione (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.
DettagliCorso 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
DettagliRETI 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
DettagliIl sistema operativo LINUX Inter Process Communication. Sommario. popen ( ) PIPE. pipe ( ) popen ( ) Sistemi operativi Modulo II
Il sistema operativo LINUX Inter Process Communication Sommario Giorgio Di Natale Stefano Di Carlo Politecnico di Torino Dip. Automatica e Informatica dup FIFO
DettagliSoluzione dell esercizio del 2 Febbraio 2004
Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo
DettagliESERCIZI 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
DettagliINTERNET e RETI di CALCOLATORI A.A. 2011/2012 Capitolo 4 DHCP Dynamic Host Configuration Protocol Fausto Marcantoni fausto.marcantoni@unicam.
Laurea in INFORMATICA INTERNET e RETI di CALCOLATORI A.A. 2011/2012 Capitolo 4 Dynamic Host Configuration Protocol fausto.marcantoni@unicam.it Prima di iniziare... Gli indirizzi IP privati possono essere
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E01 Esempi di programmi A. Miola Ottobre 2011 1 Contenuti Vediamo in questa lezione alcuni primi semplici esempi di applicazioni
DettagliUDP. Livello di Trasporto. Demultiplexing dei Messaggi. Esempio di Demultiplexing
a.a. 2002/03 Livello di Trasporto UDP Descrive la comunicazione tra due dispositivi Fornisce un meccanismo per il trasferimento di dati tra sistemi terminali (end user) Prof. Vincenzo Auletta auletta@dia.unisa.it
DettagliReti di Telecomunicazione Lezione 7
Reti di Telecomunicazione Lezione 7 Marco Benini Corso di Laurea in Informatica marco.benini@uninsubria.it Il protocollo Programma della lezione file transfer protocol descrizione architetturale descrizione
DettagliProtocolli di Comunicazione
Protocolli di Comunicazione La rete Internet si è sviluppata al di fuori dal modello ISO-OSI e presenta una struttura solo parzialmente aderente al modello OSI. L'architettura di rete Internet Protocol
DettagliL API socket ed i daemon
L API socket ed i daemon Massimo Bernaschi Istituto per le Applicazioni del Calcolo Mauro Picone Consiglio Nazionale delle Ricerche Viale del Policlinico, 137-00161 Rome - Italy http://www.iac.cnr.it/
Dettaglipuntatori Lab. Calc. AA 2007/08 1
puntatori Lab. Calc. AA 2007/08 1 parametri delle funzioni (dalla lezione scorsa) gli argomenti in C vengono passati by value dalla funzione chiamante alla funzione chiamata la lista degli argomenti viene
DettagliEsercitazione [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
DettagliScrittura 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
DettagliLab. 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 -
DettagliSistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory
FILE SYSTEM : INTERFACCIA 8.1 Interfaccia del File System Concetto di File Metodi di Accesso Struttura delle Directory Montaggio del File System Condivisione di File Protezione 8.2 Concetto di File File
DettagliParadigma 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
DettagliIntroduzione a JDConnector
JDConnector Help Introduzione a JDConnector JDConnector è stato creato per integrare il gestionale Mitico ERP con Parts Manager Pro. Configurando opportunamente i parametri di connessione dei due programmi,
DettagliTipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:
Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante
DettagliDo-Dots Protocollo di comunicazione
Do-Dots Protocollo di comunicazione Ultimo aggiornamento 10 maggio 2011 rev3 Spiegazioni 10/05/2011 rev2 Primo aggiornamento con attuali comandi 03/05/2011 rev1 - Stesura iniziale 14/05/2010 DOCUMENTO
DettagliAllocazione dinamica della memoria - riepilogo
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Storage duration Allocazione dinamica della
Dettagli