Comunicazione Connectionless o Datagram
|
|
- Cipriano Bono
- 4 anni fa
- Visualizzazioni
Transcript
1 Laboratorio Reti di Calcolatori (A.A ) Socket UDP Delfina Malandrino 2 Comunicazione Connectionless o Datagram In una comunicazione dati Datagram il canale: trasporta messaggi non è affidabile è condiviso non preserva l ordine delle informazioni Applicazioni scritte usando UDP: DNS NFS SNMP 1
2 Struttura di un Applicazione UDP 3 socket() bind() CLIENT socket() sendto() Dati (richiesta) recvfrom() Bloccato in attesa di un datagram sendto() SERVER recvfrom() Dati (risposta) close() Comunicazione senza connessione 4 Per creare un socket: socket(af_inet,sock_dgram, IPPROTO_UDP); SOCK_DGRAM è il tipo di protocollo per datagram IPPROTO_UDP è lo specifico protocollo richiesto (anche 0) 2
3 Funzioni di Input/Output 5 #include <sys/socket.h> int recvfrom(int sd, void* buf, int n, int flags, struct sockaddr* from, socklen_t *len); int sendto(int sd, const void* buf,intn,intflags, const struct sockaddr* to, socklen_t len); Per leggere o scrivere su un socket UDP si utilizzano funzioni di sistema differenti da TCP devono specificare l indirizzo del server e la sua lunghezza Restituiscono numero di byte letti/scritti se OK (>= 0) -1 se c è un errore La sendto esce dopo aver completato la spedizione non garantisce che i dati siano arrivati a destinazione Parametri di sendto 6 int sendto(int sd, const void* buf,intn,intflags, const struct sockaddr* to, socklen_t len); int sd Descrittore del socket void* buf Buffer da cui leggere i byte da inviare size_t n Numero di byte da inviare int flags Vedremo in seguito struct sockaddr* to Indirizzo del socket a cui inviare il datagram socklen_t len Lunghezza dell indirizzo puntato da to 3
4 Parametri di recvfrom 7 int recvfrom(int sd, void* buf, intn, intflags, struct sockaddr* from, socklen_t *len); int sd Descrittore del socket void* buf Buffer in cui scrivere i byte ricevuti size_t n Massimo numero di byte che si possono ricevere int flags Vedremo in seguito struct sockaddr* from Indirizzo del socket da cui ha ricevuto il datagram Può essere NULL socklen_t *len Lunghezza dell indirizzo puntato da from Funzioni sendto e recvfrom 8 I 2 argomenti finali della recvfrom sono simili ai 2 argomenti finali della accept: int recvfrom(int sd, void* buf, intn, intflags, SA* from, socklen_t *len); int accept(int sd, SA*cliaddr, socklen_t* addrlen); Il contenuto della struttura sockaddr da informazioni: Su chi ha inviato i dati (UDP) Su chi ha iniziato la connessione (TCP) 4
5 Funzioni sendto e recvfrom 9 I 2 argomenti finali della sendto sono simili ai 2 argomenti finali della connect: int sendto(int sd, const void* buf,intn,intflags, const SA* to, socklen_t len); int connect(int sd, const SA *servaddr, socklen_t addrlen); Il contenuto della struttura sockaddr va riempito con il protocol address: Dell applicazione a cui inviare dati (UDP) Dell applicazione con cui stabilire una connessione (TCP) HelloWorld UDP 10 Il Client invia la stringa Hello World al server Il server stampa la stringa su stdout 5
6 HelloWorld UDP Server 11 #include "basic.h" int main(inrtargc, char *argv[]) { int sockfd; struct sockaddr_in servaddr,cliaddr; int clilen,n; char buf[maxline]; if ((sockfd = socket(af_inet, SOCK_DGRAM, 0)) == -1) err_sys("socket error\n"); bzero(&servaddr,sizeof(servaddr)); ( servaddr.sin_family = AF_INET; servaddr.sin_port = htons(serv_port); servaddr.sin_addr.s_addr = htonl(inaddr_any); if (bind(sockfd, (SA *)&servaddr,sizeof(servaddr)) == -1) err_sys("bind error\n"); HelloWorld UDP Server 12 clilen = sizeof(struct sockaddr); int recvfrom(int sd, void* buf, intn, intflags, struct sockaddr* from, socklen_t *len); if ((n=recvfrom(sockfd,buf, MAXLINE, 0,(SA *)&cliaddr, &clilen)) == -1) err_sys("recvfrom error\n"); printf( Dati del client: %s\n",inet_ntoa(cliaddr.sin_addr)); buf[n] = '\0'; printf( Dati: \"%s\"\n",buf); close(sockfd); 6
7 HelloWorld UDP Client 13 #include "basic.h" int main(int argc, char *argv[]) { int sockfd,n; struct sockaddr_in servaddr; char buff[maxline]="hello World"; if (argc!= 2) err_quit("usage:./udpclient IP address\n"); if ((sockfd = socket(af_inet, SOCK_DGRAM, 0)) == -1) err_sys("socket"); bzero(&servaddr,sizeof(servaddr)); servaddr.sin_family sin = AF_INET; servaddr.sin_addr.s_addr = inet_addr(argv[1]); if ((n=sendto(sockfd, buff, strlen(buff), 0,(SA *)&servaddr, sizeof(struct sockaddr))) == -1) err_sys("sendto"); close(sockfd); return 0; int sendto(int sd, const void* buf,intn,intflags, const struct sockaddr* to, socklen_t len); Applicazione ECHO UDP 14 Il server replica tutti i messaggi inviatigli dal client il client legge linee di testo dallo standard input e le invia al server il server legge linee di testo dal socket e li rimanda al client il client legge righe di testo dal socket e li invia allo standard output 7
8 ECHO Client 15 #include "basic.h" #include "echo_client.h" int main(int argc, char **argv){ int sockd, n; struct sockaddr_in servaddr; if (argc!= 2) err_quit("utilizzo: echo_client <IPaddress>"); if ( (sockd = socket(af_inet, SOCK_DGRAM, 0)) < 0) err_sys("errore in socket"); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(serv_port); servaddr.sin_addr.s_addr=inet_addr(argv[1]); dg_cli_echo(stdin, sockd, (SA *) &servaddr, sizeof(servaddr)); exit(0); Echo Client: dg_cli_echo 16 #include "basic.h void dg_cli_echo(file *fp, int sockfd, const SA *pservaddr, socklen_t servlen) { int n; char sendline[maxline], recvline[maxline]; while (fgets(sendline, MAXLINE, fp)!= NULL) { sendto(sockfd, sendline, strlen(sendline), 0, pservaddr, servlen) n = recvfrom(sockfd, recvline, MAXLINE, 0, NULL, NULL); recvline[n] = 0; fputs(recvline, stdout); 8
9 ECHO Server 17 #include "basic.h int main(int argc, char **argv) { int sockfd; struct sockaddr_in servaddr, cliaddr; if ( (sockd = socket(af_inet, SOCK_DGRAM, 0)) < 0) err_sys("errore in socket"); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr sin s = htonl(inaddr_any); ANY); servaddr.sin_port = htons(serv_port); bind(sockfd, (SA *) &servaddr, sizeof(servaddr)); dg_srv_echo(sockfd, (SA *) &cliaddr, sizeof(cliaddr)); Echo Server: dg_srv_echo 18 #include "basic.h void dg_srv_echo(int sockfd, SA *cliaddr, lidd socklen_t clilen) { int n; socklen_t len; char mesg[maxline]; for ( ; ; ) { len = clilen; if( (n = recvfrom(sockfd, mesg, MAXLINE, 0, cliaddr, &len)) < 0) err_sys("errore nella recvfrom"); if( sendto(sockfd, mesg, n, 0, cliaddr, len)!= n ) err_sys("errore nella sendto"); 9
10 Controllo sul Mittente 19 Un applicazione in ascolto su una porta UDP accetta tutti i datagram ricevuti Il client deve controllare se il datagram ricevuto è la risposta del server o proviene da un altra applicazione Tutti i datagram ricevuti che non provengono dal server devono essere scartati Possibile soluzione Il client confronta l indirizzo del socket da cui ha ricevuto il datagram con quello del socket a cui ha inviato la richiesta Se il server ha più indirizzi IP potremmo scartare datagram legittimi Echo Client con verifica 20 #include "basic.h" #include "echo_client.hclient h" int main(int argc, char **argv){ int sockd, n; struct sockaddr_in servaddr; if (argc!= 2) err_quit("utilizzo: echo_client <IPaddress>"); if ( (sockd = socket(af_inet, SOCK_DGRAM, 0)) < 0) err_sys("errore in socket"); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(serv_port); servaddr.sin_addr.s_addr=inet_addr(argv[1]); dg_cli_echo(stdin, sockd, (SA *) &servaddr, sizeof(servaddr)); exit(0); 10
11 21 Echo Client con verifica Funzione dg_cli_echo void dg_cli_echo(file *fp, int sockd, const struct sockaddr * servaddr, socklen_t servlen) { int n; char sendline[maxline], recvline[maxline]; char buff[maxline], str[maxline], port[maxline]; socklen_t len; struct sockaddr *replyaddr; if( (replyaddr = malloc(servlen)) == NULL ) (1) err_sys("errore nella malloc"); while (fgets(sendline, MAXLINE, fp)!= NULL) { (2) 1. alloca la memoria per contenere l'indirizzo del mittente 2. Legge fino all EOF 22 Echo Client con verifica Funzione dg_cli_echo n = strlen(sendline); if( sendto(sockd, sendline, n, 0, servaddr, servlen)!= n ) (3) err_sys("errore nella sendto"); len = servlen; if( (n = recvfrom(sockd, recvline, MAXLINE, 0, replyaddr, &len)) < 0 ) (4) err_sys("errore nella recvfrom"); 3. spedisce una riga di testo all'indirizzo contenuto in servaddr 4. salva nel buffer recvline il contenuto del datagram ricevuto L'indirizzo del mittente è salvato in replyaddr #include <sys/socket.h> int recvfrom(int sd, void* buf, intn, intflags, struct sockaddr* from, socklen_t *len); int sendto(int sd, const void* buf,intn,intflags, const struct sockaddr* to, socklen_t len); 11
12 23 Echo Client con verifica Funzione dg_cli_echo if( (len!= servlen) memcmp(servaddr, replyaddr, len)!= 0 ) { struct sockaddr_in *sin = (struct sockaddr_in *) replyaddr; printf("risposta da %s ignorata\n", inet_ntop(af_inet, &sin->sin_addr, buff, sizeof(buff))); continue; recvline[n] = 0; if( fputs(recvline, stdout) == EOF ) err_sys("errore nella fputs"); 5. Controlla l indirizzo sorgente del datagram ricevuto se è diverso da quello in servaddr lo scarta altrimenti stampa su stdout il messaggio del server Datagrammi Perduti 24 Se un datagram si perde (es. un router lo butta via) l applicazione che lo sta attendendo può rimanere bloccata in una recvfrom() Soluzione In alcuni è possibile porre un timeout sulla recvfrom() Comunque non è possibile scoprire se il messaggio del client non è mai arrivato al server oppure se la risposta del server non è arrivata al client Utilizzare TCP 12
13 Client UDP Connessi 25 E possibile utilizzare la funzione connect() anche in applicazioni i i client senza connessione Permette di impostare una volta per tutte le due componenti remote dell associazione del client La connect() su un socket UDP implica che il kernel memorizza l indirizzo i IP e la porta con cui si vuole comunicare Client UDP Connessi 26 Può inviare datagram soltanto all indirizzo specificato nella chiamata alla connect non si usa sendto ma write o send I datagram verranno automaticamente spediti all indirizzo specificato nella chiamata a connect Può ricevere solo datagram inviati dall indirizzo specificato nella chiamata alla connect non si usa recvfrom, ma read o readv Un server UDP può comunicare con un solo client per volta Datagram che arrivano da un altro indirizzo IP verranno instradati ad un altra connessione socket UDP sullo stesso host Il pacchetto verrà scartato se non ci sono altre connessioni UDP Un errore ICMP port unreachable verrà generato 13
14 Riutilizzo della connect 27 È possibile richiamare più volte la connect() all interno della stessa applicazione i Può essere usato per Modificare l indirizzo del server con cui si vuole comunicare (specificare nuovo IP e nuova porta) Disconnettere il socket specificando AF_UNSPEC nel campo sin_family Potrebbe ritornare l errore EAFNOSUPPORT, ma è accettabile Funzione dg_cliconn_echo 1 28 void dg_cliconn_echo(file *fp, int sockd, const SA * servaddr, socklen_t servlen) { int n; char sendline[maxline], recvline[maxline]; char buff[maxline], str[maxline], port[maxline]; socklen_t len; void *ptr; if (connect(sockd, (SA *) servaddr, servlen) < 0) (1) err_sys("errore nella connect"); 1. Connette il client all indirizzo contenuto in servaddr Il client non può inviare datagram ad altri indirizzi 14
15 Funzione dg_cliconn_echo 2 29 while (fgets(sendline, MAXLINE, fp)!= NULL) { n = strlen(sendline); if( write(sockd, sendline, n)!= n ) (3) err_sys("errore nella write"); if( (n = read(sockd, recvline, MAXLINE)) < 0 ) (4) err_sys("errore nella read"); recvline[n] = 0; if( fputs(recvline, stdout) == EOF ) err_sys("errore nella fputs"); 3. Usa la write per scrivere sul socket 4. Usa la read per leggere dal socket Inaffidabilità di UDP 30 UDP non dà alcuna garanzia sulla consegna dei datagram Consideriamo la seguente applicazione client/server UDP Il client spedisce un serie di pacchetti, senza aspettare alcuna risposta (inviamo un numero fissato di datagram) Il server cicla all infinito e conta i datagram ricevuti Termina quando riceve un segnale SIGINT (CTRL-C) da stdin c e un gestore di segnale che gestisce SIGINT e stampa il numero di datagram ricevuti 15
16 Inaffidabilità di UDP 31 Applicazione client Scrive un numero fissato di datagram al server int main(int argc, char **argv) { #define NDG 2000 int sockd; /* datagram da inviare */ struct sockaddr_in servaddr; #define DGLEN 1400 /* lunghezza di ogni datagram */ if (argc!= 2) err_quit("utilizzo: count_client void dg_cli_count(file *fp, int sockd, const SA <IPaddress>"); *pservaddr, socklen_t servlen) { /* riempie la struttura servaddr */ int i; if( (sockd = socket(af_inet, char sendline[maxline]; SOCK_DGRAM, 0)) < 0 ) err_sys("errore nella socket"); dg_cli_count(stdin, sockd, (SA *) &servaddr, sizeof(servaddr)); exit(0); for (i = 0; i < NDG; i++) if( sendto(sockd, sendline, DGLEN, 0, pservaddr, servlen)!= DGLEN ) err_sys("errore nella sendto"); printf("inviati %d datagram al server\n", NDG); Inaffidabilità di UDP 32 Applicazione server int main(int argc, char **argv) { int sockd; struct sockaddr_in servaddr, cliaddr; if( (sockd = socket(af_inet, SOCK_DGRAM, 0)) < 0 ) err_sys("socket error"); /* riempie struttura servaddr */ if( bind(sockd, (SA *) &servaddr, sizeof(servaddr)) < 0 ) err_sys("bind error"); dg_srv_count(sockd, _,(SA *) &cliaddr, sizeof(cliaddr)); static void recvfrom_int(int signo) { printf("\ndatagrams ricevuti: %d\n", count); exit(0); static void recvfrom_int(int); static int count; void dg_srv_count(int sockd, struct sockaddr *p_cliaddr, socklen_t clilen) { int n; socklen_tlen; char mesg[maxline]; if( signal(sigint, recvfrom_int) == SIG_ERR ) err_sys("errore nella signal"); for (;;){ ; len = clilen; if( (n = recvfrom(sockd, mesg, MAXLINE, 0, p_cliaddr, &len)) < 0 ) err_sys("errore nella recfrom"); count++; 16
17 33 Inaffidabilità di UDP freebsd % netstat -s -p udp udp: datagrams received 0 with incomplete header 0 with bad data length field 0 with bad checksum 0 with no checksum 832 dropped due to no socket 16 broadcast/multicast datagrams dropped due to no socket 1971 dropped due to full socket buffers 0 not for hashed pcb delivered datagrams output freebsd % udpserver ^C received 30 datagrams Error: full socket buffers Non c è modo di sapere quali applicazioni o porte hanno riscontrato problemi freebsd % netstat -s -p udp udp: datagrams received 0 with incomplete header 0 with bad data length field 0 with bad checksum 0 with no checksum 832 dropped due to no socket 16 broadcast/multicast datagrams dropped due to no socket 3941 dropped due to full socket buffers 0 not for hashed pcb delivered datagrams output =1970 discarded = 30 delivered =2000 received (dall host server non dall applicazione) 17
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)
DettagliLaboratorio 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
DettagliSocket UDP. Comunicazione Connectionless o Datagram
Ret d Calcolator a.a. 2007/2008 Socket UDP Dott. Delfna Malandrno 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
DettagliReti di Calcolatori - Laboratorio. Lezione 5. Gennaro Oliva
Reti di Calcolatori - Laboratorio Lezione 5 Gennaro Oliva Server basato su I/O Multiplex Per realizzare un server è possibile utilizzare l'i/o Multiplex Un unico processo iterativo gestisce il socket che
DettagliServer 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
DettagliProgettazione 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
DettagliIntroduzione. Prof. Roberto De Prisco. Telefonini. o almeno. e non rispondere. Università degli studi di Salerno Laurea e Diploma in Informatica
Prof. Roberto De Prisco Introduzione Università degli studi di Salerno Laurea e Diploma in Informatica Telefonini 2 o almeno e non rispondere 1 Presentazione 3 Prof. Roberto De Prisco studio: L1-13 robdep@unisa.it
DettagliP3-04: I/O multiplexing
Autunno 2002 Prof. Roberto De Prisco -04: I/O multiplexing Università degli studi di alerno Laurea e Diploma in Informatica Problema 04.2 Un programma deve gestire due input simultaneamente tandard input
DettagliLaboratorio 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
DettagliLaboratorio 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
DettagliL uso di Socket UDP. Usiamo le API Winsock incluse in <Winsock.h> A.A. 2005/06. Dott.ssa Valeria Carofiglio
L uso di Socket UDP Usiamo le API Winsock incluse in A.A. 2005/06 TCP TCP vs. UDP UDP Interazione UDP Client/Server Server 1. (Inizializzare una WSA) 2. Creare una socket 3. Assegnare un local
DettagliFunzioni 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
DettagliInterazione con il DNS Conversioni di Nomi ed Indirizzi
a.a. 2003/04 Interazione con il DNS Conversioni di Nomi ed Indirizzi Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea in
DettagliTimeout. 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
DettagliLaboratorio Reti di Calcolatori (A.A ) Delfina Malandrino.
Laboratorio Reti di Calcolatori (A.A. 2008-2009) Delfina Malandrino delmal@dia.unisa.it http://www.dia.unisa.it/professori/delmal/ Applicazione echo Il server replica un messaggio inviato dal client Il
DettagliPRATICA - Lezione 1. Autunno PRATICA (Lez. 1)
PRATICA - Lezione! " # $ &%' ( "*)+,.-/ * "* )+ 2 3547698:47;!
Dettaglirequest 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
DettagliFunzioni 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
DettagliSono 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
DettagliProblema. 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
DettagliL uso di Socket UDP. TCP vs. UDP UDP
L uso di Socket UDP TCP TCP vs. UDP UDP 1 Interazione UDP Client/Server Server 1. Creare un socket 2. Assegnare un local address al socket 3. Iterativamente: a. Inviare e ricevere dati 4. Chiudere il socket
DettagliProgrammazione 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
DettagliSviluppo 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
DettagliI.I.S. G.B. PENTASUGLIA MATERA ISTITUTO TECNICO SETTORE TECNOLOGICO LICEO SCIENTIFICO SCIENZE APPLICATE. Classe: 5Ci
I.I.S. G.B. PENTASUGLIA MATERA ISTITUTO TECNICO SETTORE TECNOLOGICO LICEO SCIENTIFICO SCIENZE APPLICATE Disciplina: Tecnologie e Progettazione di Sistemi Informatici e di Telecomunicazione Cognome e Nome:
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
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
Dettagli*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,
DettagliEsercitazione sulle Socket
Esercitazione sulle Socket Sommario Echo Server Specifica Descrizione programma (TCP Socket) Client UNIX/WIN Server UNIX/WIN Server multithread UNIX/WIN Descrizione programma (UDP Socket) 2 Interazione
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
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
DettagliProgettazione 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
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
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
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
DettagliSERVER 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
DettagliTimeout. Socket Avanzati. Client echo UDP con alarm. Funzione alarm()
Università degli studi di Salerno Laurea in Informatica a.a. 2003/04 Socket Avanzati Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ 1 Timeout Abbiamo visto molte
DettagliServer 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
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
Dettaglifunzione 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
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
DettagliApplicazione 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
DettagliLaboratorio reti AA 2007/2008. Dott. Matteo Roffilli Ricevimento in ufficio dopo la lezione
Laboratorio reti AA 2007/2008 Dott. Matteo Roffilli roffilli@csr.unibo.it Ricevimento in ufficio dopo la lezione 1 Laboratorio reti AA 2007/2008 Per esercitarvi fate SSH su: alfa.csr.unibo.it si-tux00.csr.unibo.it.
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
DettagliP3-05: Socket Options
Autunno 2002 Prof. Roberto De Prisco -05: Socket Options Università degli studi di Salerno Laurea e Diploma in Informatica Socket options 05.2 Ogni socket aperto ha delle proprietà che ne determinano alcuni
DettagliLABORATORIO di Reti di Calcolatori
LABORATORIO di Reti di Calcolatori Socket in linguaggio C: protocollo connection-oriented 1 of 15 v slide della docente Bibliografia v testo di supporto: D. Maggiorini, Introduzione alla programmazione
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
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,
DettagliReti di Calcolatori. Saper scrivere semplici programmi per la comunicazione su una rete di calcolatori. Assunzione. Ambiente di sviluppo LABORATORIO
Obiettivo 2 orso di laurea in Informatica Reti di alcolatori A.A. 2007-2008 Prof. Roberto De Prisco aper scrivere semplici programmi per la comunicazione su una rete di calcolatori Assunzione apete già
DettagliC UDP in Windows p53 - variante 1
// UDPclient.c C UDP in Windows p53 - variante 1 /* Testo del problema Il processo client invia la stringa "INVIAMI UN NUMERO" diverse volte in un intervallo di tempo di 1 secondo ad un processo server
DettagliLaboratorio reti AA 2006/2007. Dott. Matteo Roffilli Ricevimento in ufficio dopo la lezione
Laboratorio reti AA 2006/2007 Dott. Matteo Roffilli roffilli@csr.unibo.it Ricevimento in ufficio dopo la lezione 1 Laboratorio reti AA 2006/2007 Per esercitarvi fate SSH su: alfa.csr.unibo.it si-tux00.csr.unibo.it.
DettagliLaboratorio 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.
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
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
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
DettagliLABORATORIO 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,
DettagliTECN.PROG.SIST.INF. UDP socket in Windows. Roberta Gerboni
Roberta Gerboni Schema logico della comunicazione UDP in linguaggio C mediante Datagram socket. bind () Con i datagram socket (SOCK_DGRAM) viene realizzata una comunicazine che permette di scambiare dati
DettagliSocket I MIDLAB. Sirio Scipioni. M I D L A B
scipioni@dis.uniroma1.it http://www.dis.uniroma1.it/~scipioni MIDLAB http://www.dis.uniroma1.it/~midlab Sommario Strutture dati Funzioni Echo client/server Echo server TCP Echo client TCP Echo server UDP
DettagliAcknowledgment: Prof Vincenzo Auletta, Università di Salerno. Approfondimento alla programmazione distribuita
Reti Informatiche Approfondimento alla programmazione distribuita Acknowledgment: Prof Vincenzo Auletta, Università di Salerno Introduzione API send e receive bloccanti e non API select Socket UDP Esempio
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
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
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
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
DettagliLaboratorio di Programmazione in Rete
Laboratorio di Programmazione 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
DettagliSCUOLA 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
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
DettagliLaboratorio 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
Dettaglifunzione close() La funzione close è utilizzata normalmente per chiudere un descrittore di file, è utilizzata per chiudere un socket e terminare una
funzione close() La funzione close è utilizzata normalmente per chiudere un descrittore di file, è utilizzata per chiudere un socket e terminare una connessione TCP. int close (int socketfd); restituisce
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
Dettagli5 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
DettagliImplementazione di un server. Server iterativo. Offro servizio ad un client alla volta. Dobbiamo scrivere un programma in C che offre un servizio
Implementazione di un server Server iterativo Offro servizio ad un client alla volta Dobbiamo scrivere un programma in C che offre un servizio Il sistema operativo tiene gli altri client in coda È la variante
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.
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
DettagliSocket TCP. prima parte
Socket TCP prima parte Cosa cambia: socket int fd = socket(pf_inet, SOCK_STREAM, 0); if (fd
DettagliAPI Socket di Berkeley
Laboratorio Reti di Calcolatori (A.A. 2008-2009) Programmazione di rete ed interfaccia API socket di Berkeley Delfina Malandrino delmal@dia.unisa.it http://www.dia.unisa.it/professori/delmal/ API Socket
DettagliLaboratorio di Reti di Calcolatori
Laboratorio di Reti di Calcolatori I/O Multiplexing. Paolo D Arco Abstract copo della lezione è presentare i vari modelli di I/O, descrivere la funzione select(), e costruire un echo client robusto ed
DettagliLaboratorio reti AA 2007/2008. Dott. Matteo Roffilli Ricevimento in ufficio dopo la lezione
Laboratorio reti AA 2007/2008 Dott. Matteo Roffilli roffilli@csr.unibo.it Ricevimento in ufficio dopo la lezione 1 Laboratorio reti AA 2007/2008 Per esercitarvi fate SSH su: alfa.csr.unibo.it si-tux00.csr.unibo.it.
DettagliEsercitazione 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
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
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
DettagliCorso di laurea in Informatica. Reti di Calcolatori A.A. 2007-2008. Prof. Roberto De Prisco LABORATORIO. Lezione
Corso di laurea in Informatica Reti di Calcolatori A.A. 2007-2008 Prof. Roberto De Prisco Lezione 1 Obiettivo 2 Saper scrivere semplici programmi per la comunicazione su una rete di calcolatori Assunzione
DettagliUn server di posta (che usa il protocollo SMTP) è identificato dal numero di porta 25.
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
DettagliCreare un'elementare backdoor in C in ambiente UNIX
Creare un'elementare backdoor in C in ambiente UNIX DISCLAIMER: Questo tutorial è a solo scopo didattico. L'autore NON si prende alcuna responsabilità circa usi errati o non legali delle informazioni qui
DettagliSocket II MIDLAB. Sirio Scipioni. M I D L A B.
Socket II Sirio Scipioni scipioni@dis.uniroma1.it http://www.dis.uniroma1.it/~scipioni MIDLAB http://www.dis.uniroma1.it/~midlab Sommario Richiami sui processi Echo server TCP (multi processo) Richiami
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
DettagliCorso 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
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 4 Programmazione con i socket Parte 1
DettagliLaboratorio 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.
DettagliLaboratorio 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.
DettagliEsempi 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
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
DettagliLe strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.
Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura
DettagliI Socket di Berkeley
I Socket di Berkeley di Francesco Licandro Dipartimento di Ingegneria Informatica e delle Telecomunicazioni Università degli studi di Catania A.A. 2004-2005 1 Programmazione su rete Le applicazioni di
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 alla programmazione C di socket
Introduzione alla programmazione C di socket (testo di riferimento : M. J. Donahoo, K. L. Calvert, TCP/IP Sockets in C: Practical Guide for Programmers. Morgan Kaufman Publishers. ) A.A. 2005/06 Una rete
DettagliReti di Calcolatori - Laboratorio. Lezione 6. Gennaro Oliva
Reti di Calcolatori - Laboratorio Lezione 6 Gennaro Oliva Diverse forme di indirizzamento Type IPv6 TCP # IP interfaces identified # IP interfaces delivered to Unicast Anycast Multicast Broadcast opt.
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,
Dettagli