Interazione con il DNS Conversioni di Nomi ed Indirizzi

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Interazione con il DNS Conversioni di Nomi ed Indirizzi"

Transcript

1 a.a. 2003/04 Interazione con il DNS Conversioni di Nomi ed Indirizzi Prof. Vincenzo Auletta Università degli studi di Salerno Laurea in Informatica 1 Il DNS consente di convertire dinamicamente nomi di dominio in indirizzi IP e viceversa L interazione con il name server avviene tramite l API resolver l applicazione interagisce con il name server utilizzando le funzioni dell API il funzionamento delle funzioni è modificabile tramite file di configurazione /etc/resolv.conf /etc/hosts, /etc/services, ecc. Il resolver è utilizzato in generale per calcolare corrispondenze tra nomi ed indirizzi nomi di e numeri di porta 2 Funzioni del resolver struct hostent* gethostbyname(const char* hostname); struct hostent* gethostbyaddr(const char* addr, size_t len, int family); Restituisce NULL se errore puntatore diverso da NULL se OK Permettono di interrogare il resolver per effettuare conversioni da nomi ad indirizzi gethostbyname: nome indirizzo gethostbyaddr: indirizzo nome 3 Struttura hostent Le funzioni gethostbyname e gethostbyaddr restituiscono puntatori ad oggetti hostent allocati staticamente struct hostent { char* h_name; /* nome canonico */ char** h_aliases; /* elenco di alias */ int h_addrtype; /* tipo di indirizzo */ int h_length; /* lunghezza dell indirizzo */ char** h_addr_list; /* elenco indirizzi */ ; #define h_addr h_addr_list[0] h_aliases e h_addr_list sono array di stringhe terminati da una stringa nulla

2 Esempio Funzionamento del Resolver 4 oggetto restituito da gethostbyname per il nome koala un nome canonico (bsdi), due alias (koala e panda) e tre indirizzi IP 4 ( , , ) h_name h_aliases h_addrtype h_length h_addr_list AF_INET 4 bsdi koala panda NULL NULL 5 Il resolver può operare sia localmente che interagendo con il DNS il file /etc/resolv.conf contiene gli indirizzi dei name server da contattare e le regole di espansione il file /etc/hosts contiene un elenco delle corrispondenze nome/indirizzo il file di configurazione (/etc/resolv.conf) stabilisce le regole di funzionamento del resolver per default contatta prima i name server e poi legge il file locale Errori In caso di errore le funzioni del resolver scrivono un codice nella variabile h_errno la funzione hstrerror() legge il valore di h_errno e restituisce un messaggio di errore appropriato i valori che può assumere h_errno sono definiti in <netdb.h> HOST_NOT_FOUND TRY_AGAIN NO_RECOVERY NO_ADDRESS (NO_DATA) 6 Il nome specificato è sconosciuto Un errore temporaneo si è verificato su un name server Un errore irrimediabile si è verificato su un name server Il nome specificato è valido ma non ha un indirizzo IP 7 Conversioni Servizi/Porte struct servent* getservbyname(const char* servname, const char* protoname); struct servent* getservbyaddr(int port, const char* protoname); Permettono di interrogare il resolver per effettuare conversioni nomi di servizi/numeri di porta getservbyname: nome porta getservbyaddr: porta nome Il resolver non interagisce con il DNS ma legge soltanto il contenuto di un file locale (/etc/services)

3 Struttura servent Altri Tipi di Interrogazioni 8 Le funzioni getservbyname e getservbyaddr restituiscono puntatori ad oggetti servent allocati staticamente struct servent { char* s_name; /* nome ufficiale del */ char** s_aliases; /* elenco di alias */ int s_port; /* numero di porta */ char* s_proto; /* protocollo da utilizzare */ ; 9 struct netent* getnetbyname(const char* netname); struct netent* getnetbyaddr(long net, int type); struct protoent* getprotobyname(const char* protoname); struct protoent* getprotobynumber(int proto); consentono di assegnare dei nomi a reti e protocolli funzioni poco utilizzate Il resolver legge i file locali (/etc/networks e /etc/protocols) 10 Altre Funzioni void sethostent(int flag); void endhostent(void); #include <unistd.h> #include <sys/utsname.h> int gethostname(char* name, size_t len); /* name contiene il risultato */ sethostent(true) consente di utilizzare TCP per interrrogare il DNS endhostent() ripristina l uso di UDP gethostname() restituisce il nome dell host corrente stesso risultato ottenuto con uname() 11 Client daytime con resolver 1 int main(int argc, char **argv) { int sockd, n; char recvline[maxline + 1], str[maxline]; struct sockaddr_in servaddr; struct in_addr **elenco_addr; struct hostent *hp; struct servent *sp; if (argc!= 3) (1) err_quit("utilizzo: dtime_client <nome dell'host> <nome del >"); if ( (hp = gethostbyname(argv[1])) == NULL) (2) err_quit("errore nella gethostbyname per l'host %s: %s", argv[1], hstrerror(h_errno)); if ( (sp = getservbyname(argv[2], "tcp")) == NULL)(3) err_quit("errore nella getservbyname per il %s", argv[2]); elenco_addr = (struct in_addr **) hp->h_addr_list; 1.legge da linea di comando il nome del server e del 2.recupera l elenco di indirizzi IP del server 3.recupera il numero di porta ed il tipo di protocollo

4 12 Client daytime con resolver 2 for ( ; *elenco_addr!= NULL; elenco_addr++) { (4) if( (sockd = socket(af_inet, SOCK_STREAM, 0)) < 0 ) err_sys("errore nella socket"); (5) bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; (6) servaddr.sin_port = sp->s_port; memcpy(&servaddr.sin_addr, *elenco_addr, sizeof(struct in_addr)); if (connect(sockd, (SA *) &servaddr, sizeof(servaddr)) == 0) (7) break; err_ret("connessione non riuscita con %s:%d", inet_ntop(hp->h_addrtype, *elenco_addr, str, sizeof(str)), ntohs(sp->s_port)); close(sockd); (8) 4. prova a connettersi a tutti gli indirizzi forniti dal resolver 5. crea il socket 6. riempie servaddr 7. tenta di connettersi e se ci riesce esce dal ciclo 8. altrimenti chiude il socket 13 Client daytime con resolver 3 if (*elenco_addr == NULL) (9) err_quit("impossibile stabiliree una connessione"); while ( (n = read(sockd, recvline, MAXLINE)) > 0) { (10) recvline[n] = 0; if( fputs(recvline, stdout) == EOF ) err_sys("errore in fputs"); exit(0); 9. se è uscito dal ciclo senza essere riuscito a stabilire la connessione esce 10.legge la data e la stampa 14 Server daytime con resolver 1 int main(int argc, char **argv) { pid_t pid; int listend, connd; struct sockaddr_in servaddr; char buff[maxline]; time_t ticks; struct servent *sp; if( (listend = socket(af_inet, SOCK_STREAM, 0)) < 0) err_sys("errore in socket"); if( (sp = getservbyname("daytime", "tcp")) == NULL ) { fprintf(stderr, "errore nella getservbyame perr il %s", argv[2]); exit(-1); /* riempie la struttura servaddr */ servaddr.sin_port = sp->s_port; if( (bind(listend, (SA *) &servaddr, sizeof(servaddr))) < 0) err_sys("errore in bind"); 15 Server daytime con resolver 2 if( listen(listend, 5) < 0 ) err_sys("errore in listen"); for ( ; ; ) { if( (connd = accept(listend, (struct sockaddr *) NULL, NULL)) < 0) err_sys("errore in accept"); if( (pid = fork()) == 0 ) { /* il figlio chiude il socket di ascolto */ ticks = time(null); snprintf(buff, sizeof(buff), "%.24s\r\n", ctime(&ticks)); if( write(connd, buff, strlen(buff))!= strlen(buff) ) err_sys("errore in write"); /* il figlio chiude il socket di connessione */ exit(0); /* il padre chiude il socket di connessione */

5 16 Funzioni Indipendenti dal Protocollo Le funzioni gethostbyname e gethostbyaddr dipendono dal tipo di indirizzi utilizzati e sono obsolete Per utilizzare l indirizzo restituito da gethostbyname dobbiamo sapere a che famiglia appartiene per copiarlo nel campo opportuno di struct sockaddr Restituisce Lo standard POSIX 1.g ha introdotto due nuove funzioni per interfacciarsi con il resolver Sono indipendenti dal tipo di indirizzi Restituiscono informazioni immediatamente utilizzabili dall applicazione L applicazione non deve sapere nulla di indirizzi, protocolli, ecc. 17 Funzione getaddrinfo int getaddrinfo(const char* host, const char* serv, const struct addrinfo *hints, struct addrinfo **result); Diverso da 0 se errore 0 se OK Consente di fare interrogazioni sia per nomi di host che di servizi contemporaneamente Legge dalla struttura puntata da hints il tipo di informazioni richieste restituisce il risultato nella lista puntata da result Struttura addrinfo Esempio 18 struct addrinfo { int ai_flags; /* nome canonico */ int ai_family; /* famiglia di indirizzi */ int ai_socktype; /* tipo di socket */ int ai_protocol; /* tipo di protocollo */ size_t ai_addrlength; /* lunghezza di ai_addr */ char* ai_canonname; /* puntatore al nome ufficiale */ struct sockaddr *ai_addr; /* puntatore all indirizzo struct addrinfo *ai_next; /* puntatore al nodo succ */ ; Tutti i puntatori indirizzano memoria allocata dinamicamente L applicazione deve preoccuparsi di rilasciare la memoria La funzione freeaddrinfo() rilascia tutta la memoria associata ad un oggetto addrinfo 19 Richiediamo informazioni sul daytime e l host koala Specifichiamo che vogliamo indirizzi IP 4 e trasporto TCP HINTS ai_flag AI_CANONNAME ai_family AF_INET ai_socktype SOCK_STREAM ai_protocol 0 ai_addrlen 0 ai_canonname NULL ai_addr NULL ai_next NULL RESULTS ai_flag 0 ai_family AF_INET ai_socktype SOCK_STREAM ai_protocol 0 ai_addrlen 16 ai_canonname bsdi.xyz.com ai_addr ai_next AF_INET 7 prossimo nodo

6 20 Errori In caso di errore la funzione getaddrinfo() restituisce un intero nonnegativo la funzione gai_strerror() legge il valore restituito dalla funzione e restituisce un messaggio di errore appropriato EAI_ADDRFAMILY EAI_AGAIN EAI_FAIL EAI_BADFLAGS EAI_FAMILY EAI_MEMORY EAI_NODATA EAI_NONAME EAI_SERVICE EAI_SOCKTYPE EAI_SYSTEM tipo di indirizzo non supportato per name un errore temporaneo si è verificato su un name server un errore irrecuperabile si è verificato su un name server valore non corretto di ai_flags valore di ai_family non supportato errore di allocazione della memoria nessun indirizzo associato a name name o service non conosciuto service non supportato per ai_socktype ai_socktype non supportato errore di sistema restituito in errno 21 Funzione getnameinfo int getaddrinfo(const struct sockaddr* sockaddr, socklen_t addrlen, char* host, size_t hostlen, char* serv, size_t servlen, int flags); Restituisce -1 se errore 0 se OK Consente di trasformare l indirizzo del socket contenuto in sockaddr in due stringhe host contiene il nome dell host e serv contiene il nome del hostlen e servlen sono le lunghezze allocate per le stringhe flags consente di modificare il comportamento di default della funzione Utilizzo di getaddrinfo() Schema Base 22 E possibile costruire delle funzioni che nascondono all applicazione tutti i dettagli relativi alla gestione del socket L applicazione usa solo i nomi dell host e del Le funzioni utilizzano le informazioni restituite da getaddrinfo() per invocare le funzioni sul socket Useremo le seguenti funzioni tcp_connect() (client TCP) tcp_listen() (server TCP) udp_client() (client UDP non connesso) udp_connect() (client UDP connesso) udp_server() (server UDP) 23 Tutte le funzioni adotteranno il seguente schema Leggono da linea di comando nome dell host e del È possibile anche specificare l indirizzo IP o il numero di porta Invocano getaddrinfo() Scorrono la lista di risultati e provano ad utilizzare ognuno degli indirizzi Appena ne trovano uno funzionante escono Se nessuno funziona escono con un errore

7 24 Tcp_connect() 1 int tcp_connect(const char *host, const char *serv) { int sockd, n; struct addrinfo hints, *risp, *backup; char buff[maxline]; bzero(&hints, sizeof(struct addrinfo)); hints.ai_family = AF_UNSPEC; (1) hints.ai_socktype = SOCK_STREAM; if ( (n = getaddrinfo(host, serv, &hints, &risp))!= 0) (2) err_quit("errore in tcp_connect per %s:%s: %s", host, serv, gai_strerror(n)); backup = risp; 1.Riempie i campi di hints 2.Invoca getaddrinfo Risultato restituito nella lista puntata da risp 25 Tcp_connect() 2 do { (3) sockd = socket(risp->ai_family, risp->ai_socktype, risp->ai_protocol); if (sockd < 0) continue; if (connect(sockd, risp->ai_addr, risp->ai_addrlen) < 0) /* ignora questo indirizzo e chiude il socket */ break; while ( (risp = risp->ai_next)!= NULL); if (risp == NULL) err_sys("errore in tcp_connect per %s:%s", host, serv); freeaddrinfo(backup); (4) return(sockd); 3. Cicla su tutti gli indirizzi di risp Prova ad eseguire prima socket() e poi connect() ed esce se ha stabilito la connessione 4. Dealloca la memoria dinamica Tcp_listen() 1 Tcp_listen() 2 26 Int tcp_listen(const char *host, const char *serv, socklen_t *addrlenp) { int listend, n; const int on = 1; struct addrinfo hints, *risp, *backup; bzero(&hints, sizeof(struct addrinfo)); hints.ai_flags = AI_PASSIVE; hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; if ( (n = getaddrinfo(host, serv, &hints, &risp))!= 0) err_quit("errore in tcp_listen per %s:%s: %s", host, serv, gai_strerror(n)); backup = risp; 1.Richiede socket passivo 2.Invoca getaddrinfo 27 do { listend = socket(risp->ai_family, risp->ai_socktype, risp->ai_protocol); if (listend < 0) continue; if( setsockopt(listend, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) == -1) (3) err_sys("errore in setsockopt"); if (bind(listend, risp->ai_addr, risp->ai_addrlen) < 0) /* ignora questo indirizzo e chiude il descrittore. */ break; while ( (risp = risp->ai_next)!= NULL); if (risp == NULL) err_quit("errore in tcp_listen per %s:%s", host, serv); if( listen(listend, LISTENQ) < 0 ) err_sys("errore in listen"); (4) if (addrlenp) *addrlenp = risp->ai_addrlen; (5) freeaddrinfo(backup); (6) return(listend); 3. Setta il socket per poter utilizzare una porta occupata 4. Se socket() e bind() riescono chiama la listen() 5. Restituisce in addrlenp un puntatore alla lunghezza dell indirizzo assegnato al socket 6. Dealloca la memoria dinamica

8 28 Client daytime con tcp_connect() 1 int main(int argc, char **argv) { int sockd, n; char recvline[maxline + 1]; socklen_t len; struct sockaddr *sa; 1.legge da linea di comando il nome del server e del 2.recupera l elenco di indirizzi IP del server 3.recupera il numero di porta ed il tipo di protocollo if (argc!= 3) (1) err_quit("utilizzo: dtime_name_client <nome dell'host> <nome del >"); sockd = tcp_connect(argv[1], argv[2]); if( (sa = malloc(maxsockaddr) == NULL ) err_sys( errore in malloc ); len = MAXSOCKADDR; if( getpeername(sockd, sa, &len) < 0 ) err_sys( errore in getpeername ); printf 29 Client daytime con tcp_connect 2 while ( (n = read(sockd, recvline, MAXLINE)) > 0) { (10) recvline[n] = 0; if( fputs(recvline, stdout) == EOF ) err_sys("errore in fputs"); exit(0); 9. se è uscito dal ciclo senza essere riuscito a stabilire la connessione esce 10.legge la data e la stampa 30 Server daytime con tcp_listen 1 int main(int argc, char **argv) { pid_t pid; int listend, connd; struct sockaddr *cliaddr; socklen_taddrlen, len; struct linger ling; char buff[maxline]; time_t ticks; switch(argc) { (1) case 2: listend = tcp_listen(null, argv[1], &addrlen); break; case 3: listend = tcp_listen(argv[1], argv[2], &addrlen); break; default: err_quit("utilizzo: dtime_name_server [<host>] < o porta>"); if( (cliaddr = malloc(addrlen)) == NULL ) err_sys("errore in malloc"); (2) 1. legge da linea di comando il nome del server e del 2. Alloca la memoria per contenere l indirizzo del client 31 Server daytime con tcp_listen 2 for ( ; ; ) { len = addrlen; if( (connd = accept(listend, cliaddr, &len)) < 0) err_sys("errore in accept"); ling.l_onoff = 1; ling.l_linger = 0; if( setsockopt(connd, SOL_SOCKET, SO_LINGER, &ling, sizeof(ling)) < 0 ) err_sys("errore in setsockopt"); if( (pid = fork()) == 0 ) { /* il processo figlio chiude il socket di ascolto */ ticks = time(null); snprintf(buff, sizeof(buff), "%.24s\r\n", ctime(&ticks)); if( write(connd, buff, strlen(buff))!= strlen(buff) ) err_sys("errore in write"); /* il processo figlio chiude il socket di connessione */ exit(0); /* il processo padre chiude il socket di connessione */

9 Client e Server UDP Dal sito è possibile scaricare il codice delle funzioni udp_client(), udp_server() e udp_connect() logica simile a tcp_connect() e tcp_listen() Il codice di un client ed un server UDP indipendenti dal protocollo 32

Server Iterativi. Server TCP Ricorsivi. Fork. Server Ricorsivi. un server iterativo gestisce una connessione alla volta. Prof.

Server Iterativi. Server TCP Ricorsivi. Fork. Server Ricorsivi. un server iterativo gestisce una connessione alla volta. Prof. Università degli studi di Salerno Laurea in Informatica a.a. 2003/04 TCP Ricorsivi Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ 1 Iterativi un server iterativo

Dettagli

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

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

Progettazione di un client TCP. Progettazione di un server TCP. Esempio: daytime TCP. Client TCP daytime

Progettazione di un client TCP. Progettazione di un server TCP. Esempio: daytime TCP. Client TCP daytime Progettazione di un client TCP Progettazione di un server TCP Passi per la progettazione di un client TCP 1. Creazione di un endpoint Richiesta al sistema operativo 2. Creazione della connessione Implementazione

Dettagli

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

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

Comunicazione Connectionless o Datagram

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

Dettagli

(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

SERVER CLIENT. Struttura di un Applicazione UDP. Socket UDP. Parametri di sendto. Funzioni di Input/Output. Prof. Vincenzo Auletta

SERVER CLIENT. Struttura di un Applicazione UDP. Socket UDP. Parametri di sendto. Funzioni di Input/Output. Prof. Vincenzo Auletta I semestre 03/04 Struttura di un Applicazione UDP Socket UDP socket() bind() Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ CLIENT socket() sendto() Dati (richiesta)

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

Laboratorio di Reti di Calcolatori

Laboratorio di Reti di Calcolatori Laboratorio di Reti di Calcolatori Funzioni utili, server ricorsivi, echo client ed echo server. Paolo D Arco Abstract Scopo della lezione è presentare alcune funzioni di utilità generale (e.g., funzioni

Dettagli

Esercitazione 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

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

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

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

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

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

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

LABORATORIO di Reti di Calcolatori

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

Dettagli

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

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

*HVWLRQHDYDQ]DWDGHOOH6RFNHWLQ& ODSULPLWLYDVHOHFW

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

Dettagli

Programmazione di Rete

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

Dettagli

Inizializzazione degli Host. BOOTP e DHCP

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

Dettagli

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

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

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

Dettagli

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

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

Dettagli

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

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

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

Timeout. Socket Avanzati. Funzione alarm() Client echo UDP con alarm I semestre 02/03 Socket Avanzati Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/~auletta/ Università degli studi di Salerno Laurea e Diploma in Informatica 1 Timeout Abbiamo visto

Dettagli

Server Ricorsivii i. Dott. Delfina Malandrino.

Server Ricorsivii i. Dott. Delfina Malandrino. A.A. 2007/2008 Rcorsv delmal@da.unsa.t http://ss.da.unsa.t/~delmal Dpartmento d Informatca ed Applcazon R.M. Capocell Unverstà degl Stud d Salerno Iteratv Un server teratvo gestsce una sngola connessone

Dettagli

Problema. I/O Multiplexing. Struttura delle Operazioni di Lettura. Modelli di I/O. Prof. Vincenzo Auletta

Problema. I/O Multiplexing. Struttura delle Operazioni di Lettura. Modelli di I/O. Prof. Vincenzo Auletta a.a. 2003/04 Problema I/O Multiplexing Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea in Informatica 1 Un applicazione

Dettagli

5 Esercitazione (svolta):

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

Dettagli

Sono definiti per vari protocolli

Sono definiti per vari protocolli Autunno 2002 Prof. Roberto De Prisco -02: Socket TCP Università degli studi di Salerno Laurea e Diploma in Informatica Socket 02.2 Letteralmente significa presa (di corrente) È l astrazione di un canale

Dettagli

Esempi di Client e Server

Esempi di Client e Server Esempi di Client e Server Corso di laurea in Informatica Laboratorio di Reti di Calcolatori A.A. 0-0 Simone Bassis bassis@di.unimi.it #include #include #include #include

Dettagli

Laboratorio Reti di Calcolatori (A.A ) Delfina Malandrino.

Laboratorio Reti di Calcolatori (A.A ) Delfina Malandrino. Laboratorio Reti di Calcolatori (A.A. 2008-2009) I/O Multiplexing Delfina Malandrino delmal@dia.unisa.it it http://www.dia.unisa.it/professori/delmal/ Problema 2 Un applicazione deve gestire più input

Dettagli

Corso di Reti di Calcolatori T

Corso di Reti di Calcolatori T Università degli Studi di Bologna Scuola di Ingegneria Corso di Reti di Calcolatori T Esercitazione 5 (svolta) Server Multiservizio: Socket C con select Luca Foschini Anno accademico 2017/2018 Esercitazione

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

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

Scrittura dei programmi applicativi di rete

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

Dettagli

Funzioni bloccanti e soluzioni

Funzioni bloccanti e soluzioni Funzioni bloccanti e soluzioni La funzione accept() e le funzioni per la gestione dell I/O (ad es., read() e write()) sono bloccanti Ad es., le funzioni read() e recv() rimangono in attesa finché non vi

Dettagli

I puntatori e l allocazione dinamica di memoria

I puntatori e l allocazione dinamica di memoria I puntatori e l allocazione dinamica di memoria L allocazione delle variabili Allocazione e rilascio espliciti di memoria Le funzioni malloc e free 2 2006 Politecnico di Torino 1 Allocare = collocare in

Dettagli

Esercitazione [7] Client/Server con Socket

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

Dettagli

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

SERVER CLIENT. Letteralmente significa presa (di corrente) È l astrazione di un canale di comunicazione fra due computer connessi da una rete

SERVER CLIENT. Letteralmente significa presa (di corrente) È l astrazione di un canale di comunicazione fra due computer connessi da una rete Socket 02.2 Letteralmente significa presa (di corrente) È l astrazione di un canale di comunicazione fra due computer connessi da una rete -02: Socket TCP Autunno 2002 Prof. Roberto De Prisco Sono definiti

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

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

Opzioni del Socket. Socket Options. Opzioni di Livello Socket. Livello delle Opzioni

Opzioni del Socket. Socket Options. Opzioni di Livello Socket. Livello delle Opzioni a.a. 2003/04 Opzioni del Socket Socket Options Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea in Informatica 1 Ogni socket

Dettagli

Programmazione di applicazioni di rete con socket - parte 1

Programmazione di applicazioni di rete con socket - parte 1 Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria Programmazione di applicazioni di rete con socket - parte 1 Corso di Sistemi Distribuiti Valeria Cardellini Anno accademico 2008/09 Applicazioni

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

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

Allocazione dinamica della memoria - riepilogo

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

Dettagli

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

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

Dettagli

Applicazione ECHO. Dott. Delfina Malandrino. p//ssd s / d

Applicazione ECHO. Dott. Delfina Malandrino.  p//ssd s / d a.a 2007/2008 Applcazone ECHO delmal@da.unsa.t http://ss.da.unsa.t/~delmal p//ssd s / d Dpartmento d Informatca ed Applcazon R.M. Capocell Unverstà degl Stud d Salerno Applcazone echo Il server replca

Dettagli

Domain Name Service. Mapping nomi/indirizzi con Socket API in C

Domain Name Service. Mapping nomi/indirizzi con Socket API in C Domain Name Service Mapping nomi/indirizzi con Socket API in C 1 Risoluzione di nomi simbolici TCP/IP ha bisogno di rappresentazioni numeriche per gli indirizzi (es. 193.204.187.189) e per le porte (es.

Dettagli

Reti (già Reti di Calcolatori )

Reti (già Reti di Calcolatori ) Reti (già Reti di Calcolatori ) Cenni di Socket Programming Renato Lo Cigno http://disi.unitn.it/locigno/index.php/teaching-duties/computer-networks Socket API Programmazione dei socket Obiettivo:imparare

Dettagli

HTTP adaptation layer per generico protocollo di scambio dati

HTTP adaptation layer per generico protocollo di scambio dati HTTP adaptation layer per generico protocollo di scambio dati Sandro Cavalieri Foschini 101786 Emanuele Richiardone 101790 Programmazione in Ambienti Distribuiti I - 01FQT prof. Antonio Lioy A.A. 2002-2003

Dettagli

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

P2-11: BOOTP e DHCP (Capitolo 23)

P2-11: BOOTP e DHCP (Capitolo 23) Autunno 2002 Prof. Roberto De Prisco -11: BOOTP e DHCP (Capitolo 23) Università degli studi di Salerno Laurea e Diploma in Informatica Indirizzi IP dinamici 11.2 Un indirizzo IP statico è assegnato ad

Dettagli

Inizializzazione, Assegnamento e Distruzione di Classi

Inizializzazione, Assegnamento e Distruzione di Classi Inizializzazione, Assegnamento e Distruzione di Classi Lezione 9 Operazioni Automatiche In ogni programma C++ oggetti classe vengono gestiti automaticamente dal compilatore Inizializzati al momento della

Dettagli

Introduzione ai socket

Introduzione ai socket Introduzione ai socket Socket locali Contiene lucidi tratti da: 2006-2007 Marco Faella, Clemente Galdi, Giovanni Schmid (Università di Napoli Federico II), 2004-2005 Walter Crescenzi(Universita di Roma

Dettagli

Funzioni bloccanti e soluzioni. Funzioni bloccanti e soluzioni (2) Parametri della funzione select() Funzione select()

Funzioni bloccanti e soluzioni. Funzioni bloccanti e soluzioni (2) Parametri della funzione select() Funzione select() Funzioni bloccanti e soluzioni La funzione accept() e le funzioni per la gestione dell I/O (ad es., read() e write()) sono bloccanti Ad es., le funzioni read() e recv() rimangono in attesa finché non vi

Dettagli

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

Funzioni in C. Violetta Lonati

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

Dettagli

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

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

Introduzione alla programmazione in C

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

Dettagli

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

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

Dettagli

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

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

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

Dettagli

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

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

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

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

Dettagli

Fondamenti di Informatica 2

Fondamenti di Informatica 2 Fondamenti di Informatica 2 della prova scritta del 28 Febbraio 2006 Esercizio 1 (4 punti) Date le seguenti variabili int A[] = 2,3,7,-2,5,8,-4; int N = 7; int min = 3; int i; Scrivere la porzione di codice

Dettagli

Scrittura dei programmi applicativi di rete

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

Dettagli

Architetture dei Calcolatori e Sistemi Operativi

Architetture dei Calcolatori e Sistemi Operativi Prof. Gerardo Pelosi & Ing. Michele Scandale 16 Ottobre 2014 Gerardo Pelosi 1 Nota: l insieme delle pagine man su piattaforme Linux-like è solitamente organizzato in otto sezioni

Dettagli

Esercitazione sulle libpq - libreria C per PostgreSQL

Esercitazione sulle libpq - libreria C per PostgreSQL Esercitazione sulle libpq - libreria C per PostgreSQL Roberto Tronci roberto.tronci@diee.unica.it Basi di Dati A.A. 2007/2008 Tronci ( roberto.tronci@diee.unica.it ) Esercitazione libpq Basi di Dati 2007/2008

Dettagli

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

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

Dettagli

Corso di Reti di Calcolatori T

Corso di Reti di Calcolatori T Università degli Studi di Bologna Scuola di Ingegneria Corso di Reti di Calcolatori T Esercitazione 3 (svolta) Socket C senza e con connessione Luca Foschini Anno accademico 2017/2018 Esercitazione 3 1

Dettagli

Corso di Reti di Calcolatori L-A

Corso di Reti di Calcolatori L-A Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 3 (svolta) Socket C senza e con connessione Luca Foschini Anno accademico 2009/2010 Esercitazione

Dettagli

IPC System V. Code di messaggi

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

Dettagli

funzione fork() La funzione fork è usata per duplicare un processo. #include <unistd.h> pid_t fork (void);

funzione fork() La funzione fork è usata per duplicare un processo. #include <unistd.h> pid_t fork (void); La funzione fork è usata per duplicare un processo. #include pid_t fork (void); funzione fork() restituisce -1 in caso di errore. Se tutto va a buon fine restituisce 0 nel processo figlio ed

Dettagli

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni. Le funzioni in C I programmi C sono costituiti da definizioni di variabili e funzioni. Una definizione di funzione ha il seguente formato: tipo-ritornato nome-funzione(lista-parametri) { dichiarazioni

Dettagli

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

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

Dettagli

appunti delle lezioni Architetture client/server: applicazioni client

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

Dettagli

LABORATORIO di Reti di Calcolatori

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

Dettagli

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

Esercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/2012. - Comunicazione Tra Processi (IPC) - - 2 Parte - Esercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/2012 - Comunicazione Tra Processi (IPC) - - 2 Parte - 1 Sommario Comunicazione tra processi su macchine diverse in rete: Socket TCP o Socket Stream

Dettagli

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

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

Dettagli

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

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

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

Dettagli

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

Introduzione al Linguaggio C

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

Dettagli

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

Paradigma client-server

Paradigma client-server Interazione Client Server (socket) Vittorio Maniezzo Università di Bologna Vittorio Maniezzo Università di Bologna 15 CliSer - 1/31 Paradigma client-server Le applicazioni utente devono interagire con

Dettagli

Introduzione alle applicazioni di rete

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

Dettagli

costruttori e distruttori

costruttori e distruttori costruttori e distruttori Costruttore E un metodo che ha lo stesso nome della classe a cui appartiene: serve per inizializzare un oggetto all atto della sua creazione Ce ne possono essere uno, più di uno,

Dettagli