Esempio 1: stampa locale di file remoto
|
|
- Laura Venturini
- 6 anni fa
- Visualizzazioni
Transcript
1 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 inviare un messaggio contenente il nome di un file leggibile, appartenente al file system del nodo su cui risiede il server. Il client si pone in attesa della risposta, rappresentata dal contenuto del file richiesto; ogni byte ricevuto attraverso il canale viene stampato dal client sul dispositivo di standard output. Soluzione Il server, una volta eseguita la richiesta, dovrà inviare al client una sequenza di caratteri,di lunghezza non nota a priori: usiamo le socket stream, perché: garantiscono l'ordine dei messaggi trasmessi la dimensione dei messaggi non e` a priori limitata Struttura Cliente #include <arpa/inet.h> allocazione della struttura rem_indirizzo main(argc, argv) int argc; char **argv; { int sock, retval, i; char mess[10], ris[1000]; il server esegue all'indirizzo ip: struct sockaddr_in rem_indirizzo; /*per indirizzo socket remota*/ memset ((char *)&rem_indirizzo, 0, sizeof(struct sockaddr_in)); /* Preparazione indirizzo del server */ rem_indirizzo.sin_family = AF_INET; rem_indirizzo.sin_addr.s_addr=inet_addr(" "); rem_indirizzo.sin_port = 22375; il server ascolta sulla porta
2 Client (..continua) /* Preparazione del messaggio*/ apertura della socket del client strcpy(mess, argv[1]); /* creazione della socket */ sock=socket(af_inet, SOCK_STREAM, 0); connessione con la socket remota connect(sock, &rem_indirizzo, sizeof(struct sockaddr_in)); write(sock,mess, 10); /*oppure send*/ while (i=read(sock,ris, 1)>0) printf("%s",ris); invio del nome del file al server shutdown(sock,2); /*Codice server*/ main() { char nomefile[20], buff; int newsock, sock, lung; FILE *fp; struct sockaddr_in mio_indirizzo; Struttura del server apertura della socket di ascolto memset((char *)&mio_indirizzo, 0, sizeof(struct sockaddr_in)); sock=socket(af_inet, SOCK_STREAM, 0); /*socket d'ascolto*/ if(sock<0) {perror("apertura socket"); exit(1); mio_indirizzo.sin_family=af_inet; mio_indirizzo.sin_port=22375; server (..continua) if(bind(sock, &mio_indirizzo, sizeof(struct creazione sockaddr_in))<0) della coda {exit(1); di richieste listen(sock, 5); newsock=accept(sock, (struct sockaddr_in *) 0, 0); close(sock); read(newsock, nomefile, 20); fp=fopen(nomefile, "r"); while(fscanf(fp, "%c", &buff) write(newsock, &buff, 1); shutdown(newsock, 1); pubblicazione della socket di ascolto attesa di richieste di connessione Possibili miglioramenti della soluzione: La soluzione non tiene conto dei possibili errori nell'invocazione delle primitive: gestione delle eccezioni. Il server accetta una sola richiesta e poi termina; soluzioni piu` generali: server iterativo: : in grado di servire piu` richieste in sequenza server concorrente: : in grado di servire piu` richieste in parallelo (uso della system call fork()) ricezione del messaggio 2
3 Esempio 2: calcolatrice Applicazione Client/server che consente di effettuare le 4 operazioni tra interi in remoto. Il client invia al server un pacchetto contenente l'operazione richiesta (+,*,-,/),/) e gli operandi su cui effettuarla (op1 e op2). Il server interpreta i dati della richiesta, esegue l'operazione e invia al client un datagramma contenente il risultato. Soluzione: : Client #include <stdlib.h> /* Dichiarazione del tipo associato alla richiesta:*/ typedef struct { int op1; int op2; char tipoop; Request; int main(int argc, char **argv) { struct sockaddr_in clientaddr, servaddr; int port, sd, num1, num2, len, ris; char ok[80]; char c; Request req; clientaddr.sin_family = AF_INET; clientaddr.sin_addr.s_addr = INADDR_ANY; clientaddr.sin_port = 0; memset((char *)&servaddr, 0, sizeof(struct sockaddr_in)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr= inet_addr(" "); servaddr.sin_port = 22777; /* CREAZIONE SOCKET :*/ sd=socket(af_inet, SOCK_DGRAM, 0); /* BIND SOCKET, a una porta scelta dal sistema*/ bind(sd,(struct sockaddr *) &clientaddr, sizeof(clientaddr)); /* lettura dei dati da inviare */ printf("primo operando (intero): "); scanf("%d", &req.op1) ; printf("secondo operando (intero): "); scanf("%d", &req.op2); do{ printf("operazione (+, -, *, /): "); c = getchar(); while (c!='+' && c!='-' && c!='*' && c!='/'); req.tipoop=c; 3
4 /* richiesta operazione: */ len=sizeof(servaddr); sendto(sd, &req, sizeof(request), 0, &servaddr, len); /* ricezione del risultato */ printf("attesa del risultato...\n"); recvfrom(sd, &ris, sizeof(ris), 0, (struct sockaddr *)&servaddr, &len); printf("esito dell'operazione: %d\n", ris); /* CHIUSURA SOCKET */ close(sd); printf("\nclient: termino...\n"); exit(0); Struttura server: #include <stdlib.h> /* Dichiarazione del tipo associato alla richiesta:*/ typedef struct { int op1; int op2; char tipoop; Request; int main(int argc, char **argv) { int sd; int len, num1, num2, ris; struct sockaddr_in cliaddr, servaddr; Request* req =(Request*)malloc(sizeof(Request)); /* INIZIALIZZAZIONE INDIRIZZO SERVER: */ memset((char *)&servaddr, 0, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = INADDR_ANY; servaddr.sin_port = 22777; /* CREAZ., BIND E SET. OPZIONI SOCKET */ sd=socket(af_inet, SOCK_DGRAM, 0); bind(sd,(struct sockaddr *) &servaddr, sizeof(servaddr)); /* CICLO DI RICEZIONE RICHIESTE */ for(;;) { len=sizeof(struct sockaddr_in); recvfrom(sd, req, sizeof(request), 0, &cliaddr, &len); switch(req->tipoop) { case '+': ris= req->op1 + req->op2; break; case '-': ris= req->op1 - req->op2; break; case '*': ris= req->op1 * req->op2; break; case '/': if (req->op1!=0) ris = req->op1 / req->op2; break; default: ris=99999; /* risultato in caso di errore */ /* invio risultato:*/ sendto(sd, &ris, sizeof(ris), 0, &cliaddr, len); /* ciclo for */ 4
5 Osservazioni: La soluzione non tiene conto dei possibili errori nell'invocazione delle primitive: gestione delle eccezioni La soluzione funziona se client e server adottano le stesse convenzioni di rappresentazioni dei dati; altrimenti,, e` necessario convertire esplicitamente il formato dei dati inviati/ricevuti (v. funzioni di conversione). Le informazioni relative agli indirizzi (ip address, porta) sono rappresentate da costanti; ; come fare a recuperarle "dinamicamente"? (v. primitive per la gestione degli indirizzi) Complementi Funzioni di conversione Funzioni ausiliarie per la portabilita` delle informazioni scambiate (come nel livello di presentazione OSI): Conversione di interi Quattro funzioni di libreria per convertire da formato di rete in formato interno per interi (lunghi o corti) trasformazione di un intero da formato esterno in interno: * shortlocale = ntohs(shortrete); longlocale = ntohl(longrete); trasformazione di un intero da formato interno in esterno: shortrete = htons(shortlocale); longrete = htonl(longlocale); Funzioni di conversione Conversione di indirizzi IP: Conversione tra indirizzi IP a 32 bit e corrispondente notazione col punto decimale (ascii: " "): inet_addr() converte l'indirizzo dalla forma con punto decimale: indirizzo = inet_addr(stringa); /*stringa contiene l'indirizzo in formato punto decimale, risultato indirizzo IP a 32 bit*/ inet_ntoa() esegue la funzione inversa: stringa = inet_ntoa(indirizzo); /*indirizzo indirizzo IP a 32 bit (cioè un long integer) risultato stringa di caratteri con indirizzo in forma con punto*/ 5
6 Primitive per la gestione degli indirizzi per ottenere l'indirizzo Internet di un Host remoto a partire dal nome logico di dominio del nodo (es. "studenti.deis.unibo.it"): la primitiva gethostbyname() restituisce l'indirizzo Internet e relativa lunghezza: struct hostent * gethostbyname (name); char *name; NB: gethostbyname restituisce un puntatore a una struttura di tipo hostent, oppure NULL se fallisce. struct hostent { char * h_name; /* nome ufficiale dell'host */ char ** h_aliases; /* lista degli aliases */ int h_addrtype; /* tipo dell'indirizzo dell'host */ int h_length; /* lunghezza del'indirizzo */ char ** h_addr_list; Primitive per la gestione degli indirizzi Per ottenere il numero di porta associato ad un servizio noto: la primitiva getservbyname() struct servent *getservbyname (name,proto) char *name,*proto; restituisce il puntatore a una struttura di tipo servent. Esempio di uso: struct servent *sp; struct sockaddr_in peeraddr; sp=getservbyname("example","tcp"); peeraddr.sin_port=sp->s_port; Socket: elenco principali primitive 6
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(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*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,
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
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(...)
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
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
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
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
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
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
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
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
DettagliCORSO 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
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
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=
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
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
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
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
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..................................................................................
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
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
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
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
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
DettagliLa programmazione di rete
La programmazione di rete Introduzione alla programmazione di rete La connessione La trasmissione 20 febbraio 2004 Applicazioni distribuite Applicazione: un insieme di programmi coordinati per svolgere
DettagliSocket TCP. prima parte
Socket TCP prima parte Cosa cambia: socket int fd = socket(pf_inet, SOCK_STREAM, 0); if (fd
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
DettagliSERVER 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)
DettagliDomain 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.
DettagliGuida 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
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
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
DettagliApplicazione distribuita
La programmazione di applicazioni distribuite in C Il concetto di applicazione distribuita L architettura di una applicazione distribuita Il paradigma a scambio di messaggi Il paradigma client-server Il
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.
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
DettagliInput/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE
Input/output da file Il linguaggio C non contiene istruzioni di I/O, in quanto tali operazioni vengono eseguite tramite funzioni di libreria standard. Questo approccio rende estremamente flessibile e potente
DettagliUna socket è un punto estremo di un canale di comunicazione accessibile mediante un file descriptor. Alcuni tipi predefiniti di socket
Una socket è un punto estremo di un canale di comunicazione accessibile mediante un file descriptor Le socket costituiscono un fondamentale strumento di comunicazione, basato sullo scambio di messaggi,
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 2 RIPASSO. EX. 1 Un processo padre (parent) crea due processi figli (children) e attende la loro terminazione. Se, e solo se,...
ESERCITAZIONE DEL 23 MARZO 2002 ESERCITAZIONE 2 RIPASSO EX. 1 Un processo padre (parent) crea due processi figli (children) e attende la loro terminazione. Se, e solo se,. EX. 2 Un server di rete attende
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
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
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
DettagliPrecedenza e associatività. Complementi sul C - 2. Esempi. Esempi
Complementi sul C - 2 Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C Precedenza e associatività () [] ->. S D! ~ ++ + * & (cast ) sizeof S D * / % S D + - (somma e sottrazione) S D >
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
DettagliModello client-server
Modello -server Il server fornisce servizi sulla rete Viene eseguita l applicazione server su un host L applicazione attende connessioni dalla rete Il usufruisce del servizio attraverso la rete Deve conoscere
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
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
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
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
Dettagligiapresente( ) leggi( ) char * strstr(char * cs, char * ct) NULL
Materiale di ausilio utilizzabile durante l appello: tutto il materiale è a disposizione, inclusi libri, lucidi, appunti, esercizi svolti e siti Web ad accesso consentito in Lab06. L utilizzo di meorie
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
DettagliT.A.R.I. Socket (ICT, AL)
Internet Applications (Client-Server Concept, Use of Protocol Ports, Socket API, DNS, E-mail, TELNET, FTP) Funzionalità Livello di trasporto e livelli sottostanti Comunicazione base Disponibilità Livello
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
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
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
DettagliFondamenti di Informatica T. Linguaggio C: i puntatori
Linguaggio C: i puntatori Il puntatore E` un tipo di dato, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore è un insieme
DettagliGestione dei file. File di testo e binari
Gestione dei file Un file e definito come un oggetto, presente nel file system, costituito da una sequenza continua di bytes Un file, per poter essere utilizzato, deve essere aperto Successivamente e possibile
DettagliComplementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -
Complementi - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system - Università degli Studi di Brescia Prof. Massimiliano Giacomin
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
DettagliScrittura formattata - printf
Esercizi su Input/Output con formato FormattedIO 1 Scrittura formattata - printf Funzione printf int printf ( , ) La funzione restituisce un valore intero uguale ai caratteri
DettagliLIBRERIE STANDARD in C. LIBRERIE STANDARD in C
LIBRERIE STANDARD in C La libreria standard del C è in realtà un insieme di librerie Per usare una libreria, non occorre inserirla esplicitamente nel progetto: ogni ambiente di sviluppo sa già dove cercarle
DettagliPuntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata
Puntatori int i = 10; int * pi = &i; pi i = 10 116 int * pi = pi contiene un informazione che mi permette di accedere ( puntare ) ad una variabile intera Un puntatore contiene un numero che indica la locazione
DettagliTECN.PROG.SIST.INF. TCP socket in Windows. 2015 - Roberta Gerboni
2015 - Roberta Gerboni Schema logico della comunicazione TCP in linguaggio C mediante bytestream socket. Parte asimmetrica Ruolo passivo bind () Parte asimmetrica Ruolo attivo Parte simmetrica Parte simmetrica
DettagliCorso di Reti di Calcolatori L-A
Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 9 (svolta) RPC: Inizializzazione Strutture Dati sul Server Luca Foschini Anno accademico 2010/2011
DettagliConsideriamo un vettore allocato dinamicamente
Libreria per per la la gestione/manipolazione dei dei vettori Consideriamo un vettore allocato dinamicamente int * v; v = (int *) malloc (n * sizeof (int) ); Conversione di tipo da void * a int * Numero
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
DettagliUnità Didattica 5 Linguaggio C. Stringhe. Accesso a file ASCII. Strutture.
Unità Didattica 5 Linguaggio C Stringhe. Accesso a file ASCII. Strutture. 1 Stringhe Una stringa è una sequenza di caratteri (es: ciao, sd!n29dnqa ); In C non esiste una variabile di tipo stringa; Una
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
DettagliSistemi Operativi Teledidattico
Sistemi Operativi Teledidattico Anno 2002 3a esercitazione 5/10/2002 Paolo Torroni processi fork (creazione di un figlio) exec (sostituzione di codice del programma in esecuzione) wait (attesa della terminazione
DettagliLezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit
Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione
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
DettagliCompito B. Reti di Calcolatori L-A Compito B. Parte Java. Parte C. Cognome: Matricola:
Reti di Calcolatori L-A Compito B Parte Java Compito B Cognome: Nome: Matricola: Utilizzando java RMI sviluppare un applicazione C/S che consenta di effettuare operazioni remote relative ai corsi della
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
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
DettagliTipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C
Tipi di dati strutturati e Linguaggio C Record o strutture Il costruttore struct in C Dati strutturati Record Un record o struttura è una struttura dati ottenuta aggregando elementi di tipo diverso che
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 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
DettagliLo strato di applicazione in Internet
Lo strato di applicazione in Internet Prof. Ing. Carla Raffaelli a.a. 2004/2005 Protocolli applicativi Sono i protocolli utilizzati dalle applicazioni per scambiarsi informazioni Esempi: HTTP per il web,
DettagliIl modello Client/Server. La comunicazione
Il modello Client/Server La comunicazione Se sintetizziamo uno scenario completo possiamo identificare diverse interfacce di comun icazione: Interfaccia di comuncazione: insieme delle API necessarie alla
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
DettagliSistemi di Elaborazione. Introduzione alla Programmazione distribuita
Sistemi di Elaborazione Introduzione alla Programmazione distribuita Obiettivi Introdurre i concetti di base su programmazione distribuita Modello Client-Server Interfaccia Socket Progettare e realizzare
DettagliCorso di Reti di Calcolatori T
Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori T Progetto C/S con Socket in C Antonio Corradi Anno accademico 2011/2012 Socket in C 1 COMUNICAZIONE e SOCKET Necessità
DettagliLe Opzioni per i Socket
Advanced TCP Socket Le Opzioni per i Socket Le opzioni per i socket sono controllate mediante tre tipi di primitive: 1) le funzioni getsockopt() e setsockopt(), che permettono di configurare alcune caratteristiche
DettagliPassare argomenti al programma
Passare argomenti al programma Quando si invoca un programma è possibile passare degli argomenti ad esso durante la chiamata. Gli argomenti ricevuti saranno stringhe (array di char) quindi l insieme di
DettagliGestione dei file. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico
Gestione dei file Stefano Ferrari Università degli Studi di Milano stefano.ferrari@unimi.it Programmazione anno accademico 2016 2017 Gli stream Si dice stream qualsiasi sorgente di dati in ingresso e qualsiasi
DettagliStringhe e allocazione dinamica della memoria
Stringhe e allocazione dinamica della memoria Esercizio Scrivere un programma strings.c che legge da standard input una sequenza di parole separate da uno o più spazi, e stampa le parole lette, una per
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
DettagliESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 21 Gennaio 1998
21 Gennaio 1998 PROVA PRATICA Si scriva un programma C (BASIC per gli studenti di Elementi di Informatica) che: a) Legga da terminale una sequenza di caratteri terminati dal carattere '*' (un carattere
DettagliArray. Maurizio Palesi Salvatore Serrano. In C si possono definire tipi strutturati Vi sono due costruttori fondamentali
MASTER Information Technology Excellence Road (I.T.E.R.) Array Maurizio Palesi Salvatore Serrano Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 1 Tipi di dato stutturati In C si possono
DettagliEsercizi di programmazione in linguaggio C English Dictionary
Esercizi di programmazione in linguaggio C English Dictionary Il file di testo wordnet.txt contiene un certo numero di parole (word) e il corrispondente significato (meaning) secondo il seguente formato:
DettagliInformatica 1. Corso di Laurea Triennale in Matematica. Gianluca Rossi
Informatica 1 Corso di Laurea Triennale in Matematica Gianluca Rossi gianluca.rossi@uniroma2.it Dipartimento di Matematica Università di Roma Tor Vergata 11: Stringhe (www.informatica-uno.blogspot.com)
DettagliOperazioni sulle stringhe Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm
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
DettagliEsercizi di programmazione in C
Esercizi di programmazione in C Esercizio 1 Scrivere un programma in linguaggio C che legga da tastiera una sequenza di lunghezza ignota a priori di numeri interi positivi. Il programma, a partire dal
DettagliEsame Laboratorio di Sistemi Operativi 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
DettagliCorso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori a.a. 2009/10
Corso di Laurea in Ingegneria Informatica Corso di Reti di Calcolatori a.a. 2009/10 Roberto Canonico (roberto.canonico@unina.it) Antonio Pescapè (pescape@unina.it) Le socket di Berkeley Le socket di Berkeley
DettagliLe Strutture di controllo Del Linguaggio C. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni
Le Strutture di controllo Del Linguaggio C Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni STRUTTURE DI CONTROLLO PRIMITIVE SEQUENZA SELEZIONE (o scelta logica) ITERAZIONE NON PRIMITIVE
DettagliFondamenti di Informatica T-1, 2010/2011 Modulo 2. Prova d Esame 5A di Mercoledì 13 Luglio 2011 tempo a disposizione 2h
Prima di cominciare: si scarichi dal sito http://esamix.labx il file StartKit5A.zip contenente i file necessari (progetto Visual Studio ed eventuali altri file di esempio). Avvertenze per la consegna:
Dettagli