Networking. Apertura di uno stream sulla rete: URL

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Networking. Apertura di uno stream sulla rete: URL"

Transcript

1 Networking Il networking in java è supportato nel package java.net, che permette, mediante classi e metodi opportuni, di trasferire informazioni attraverso la rete utilizzando: protocolli derivati dal mondo WWW (classe URL) tecniche associate alla programmazione socket (classi Socket e ServerSocket) Le applet sono soggette alla restrizione di poter comunicare solamente con il server da cui provengono. La comunicazione non è possibile se si utilizza un alias (nome logico differente associato allo stesso host) da quello iniziale. Per trasferire un file da un host della rete Internet utilizzando protocolli Web, ovvero per aprire uno stream sulla rete utilizzando la classe URL,sideve: creare un istanza della classe URL, che contiene l indirizzo WWW del file da trasferire creare un istanza della classe URLConnection che permetta di caricare la URL precedentemente istanziata utilizzare i metodi connect() e getinputstream() della classe URLConnection per collegarsi alla URL desiderata creare un oggetto InputStreamReader che permette di leggere uno stream di dati dalla URL creare un oggetto BufferedReader per leggere in modo efficiente i caratteri dallo stream. : NETWORKING 1 Apertura di uno stream sulla rete: URL import java.awt.*;import java.awt.event.*;import java.net.*;import java.io.*; public class GetFile extends Frame implements Runnable { Thread runner; URL page; TextArea box = new TextArea("Sto cercando di scaricare il file..."); public GetFile() { super("get File"); add(box); try { page = new URL(" catch (MalformedURLException e) { System.out.println("URL errata: " + page); public static void main(string[] arguments) { GetFile frame = new GetFile(); WindowListener l = new WindowAdapter() { public void windowclosing(windowevent e) {System.exit(0); ; frame.addwindowlistener(l); frame.pack(); frame.setvisible(true); if (frame.runner == null) { frame.runner = new Thread(frame); frame.runner.start(); : NETWORKING 2

2 Apertura di uno stream sulla rete: URL public void run() { URLConnection conn = null; InputStreamReader in; BufferedReader data; String line; StringBuffer buf = new StringBuffer(); try { conn = this.page.openconnection(); conn.connect(); box.settext("connessione aperta..."); in = new InputStreamReader(conn.getInputStream()); data = new BufferedReader(in); box.settext("sto leggendo i dati..."); while ((line = data.readline())!= null) {buf.append(line + "\n"); box.settext(buf.tostring()); catch (IOException e) { System.out.println("IO Error:" + e.getmessage()); : NETWORKING 3 Programmazione socket: cenni La programmazione socket si basa sul classico modello client-server della rete Internet. Il programma server è sempre in esecuzione può fornire più servizi si rende visibile in rete attraverso uno o più punti di accesso (detti porte) ognuno dei quali corrisponde ad un ben preciso servizio. Le porte sono sempre disponibili. Il programma client presenta richieste ad uno specifico server utilizza una porta temporanea tratta ogni singola richiesta come operazione isolata. I server possono essere di tipo iterativo: se il servizio è di breve durata si serve la richiesta del client, rendendosi indisponibili a servire altri client contemporaneamente concorrente: se il servizio è di lunga durata si attiva un sottoprocesso che gestisce l interazione con lo specifico client e ci si pone in attesa di una nuova richiesta. In questo modo si è disponibili a servire più client contemporaneamente PROGRAMMAZIONE SOCKET 1

3 UNIX: input/output Le applicazioni in Unix interagiscono con il sistema operativo mediante le system calls, chiamate di sistema. Le system calls sono del tutto analoghe a chiamate a procedura. L input/output (I/O) in Unix segue un processo che prevede l uso in sequenza delle funzioni open(): l esecuzione della open() su un file (oppure in generale su un device, un dispositivo generico) permette di ottenere un descrittore del file. read() - write(): è possibile eseguire operazioni di lettura e scrittura utilizzando il descrittore del file. close(): al termine delle operazioni si rilascia il descrittore con una chiamata a close(). PROGRAMMAZIONE SOCKET 2 UNIX: input/output in rete Molto simile all I/O su file, ma si basa sul concetto di socket. Un (o una) socket permette di interagire in rete in modo analogo a come si agisce su un file, mediante un descrittore di socket. Esistono tre tipi di socket: STREAM: utilizzati per comunicazioni orientate alla connessione. Sono bidirezionali, affidabili e prevedono flusso sequenziale dei dati, senza limiti di dimensione di messaggio. DATAGRAM: utilizzati per comunicazioni non orientate alla connessione. Sono bidirezionali, non affidabili e prevedono flusso non sequenziale dei dati, con limiti di dimensione di messaggio a 8KB. RAW: accesso diretto al protocollo sottostante. Non usato da applicativi utente. Esistono due tipi di famiglie di indirizzi di socket: AF UNIX: per comunicazione tra processi UNIX AF INET: per comunicazione tra processi in rete PROGRAMMAZIONE SOCKET 3

4 Famiglia AF INET La struttura dati dei socket appartenenti alla famiglia AF INET è: struct sockaddr_in { short sin_family; /* TAG (AF_INET) */ u_short sin_port; /* Numero della porta */ struct in_addr sin_addr; /* Indirizzo IP */ char sin_zero[0]: /* Padding */ ; typedef in_addr { unsigned long s_addr; PROGRAMMAZIONE SOCKET 4 Client e server Si esaminano le seguenti operazioni: creazione di un socket da parte di un server che fornisce un servizio orientato alla connessione trasferimento dati parte di un server iterativo concorrente creazione di un socket da parte di un client che richiede un servizio orientato alla connessione connessione al server da parte del client trasferimento dati da parte del client PROGRAMMAZIONE SOCKET 5

5 Server: creazione di un socket 1. Si crea un descrittore di socket sock di tipo intero mediante la chiamata sock = socket(af INET, SOCK STREAM, 0);, specificando famiglia del socket tipo del socket protocollo di basso livello che si intende utilizzare (TCP, UDP) 2. Si esegue il binding, ovvero si crea un legame tra un nome ed il socket, associando al descrittore di socket una struttura dati opportuna. #define SERVER_PORT 2438 /* Porta maggiore di 1024 struct sockaddr_in server; server.sin_family = AF_INET; server.sin_addr.s_addr = INADDR_ANY; /* Wildcard per accettare connessioni /* da qualunque indirizzo server.sin_port = htons(server_port); /* Conversione a big endian bind(sock, server, sizeof (server)); /* Se binding fallisce, torna -1 PROGRAMMAZIONE SOCKET 6 Server: creazione di un socket 3. Il server dichiara al sistema operativo la disponibilità ad accettare connessioni sul socket sock con la chiamata: listen(sock,n), limitando il numero di connessioni accodate con il parametro n. 4. Il server si pone in attesa di richieste di connessioni, con una chiamata bloccante alla procedura accept(): struct sockaddr_in int fd, client_len; client; client_len = sizeof client; fd = accept(sock, &client, &client_len); 5. All arrivo della richiesta di connessione, la procedura accept() ritorna un descrittore di connessione, sbloccando il server. Il descrittore di connessione permette di identificare in modo univoco la connessione con il client. PROGRAMMAZIONE SOCKET 7

6 Server: creazione di un socket Le connessioni sono univocamente identificate dall insieme di: un protocollo indirizzo IP del server indirizzo IP del client numero di porta del server numero di porta del client Esistono importanti differenze tra i descrittori: Il descrittore di socket non è utilizzanto per trasferire dati tra client e server, ma solo per accettare connessioni. È associato al socket e rimane valido fino a quando il socket non è chiuso. Il descrittore di connessione è utilizzanto per trasferire dati tra client e server. Il descrittore di connessione è associato alla singola connessione e scompare quando la connessione è chiusa. PROGRAMMAZIONE SOCKET 8 Trasferimento dati: server iterativo Per trasferire dati tra client e server, si utilizza il descrittore di connessione, in modo del tutto analogo a quanto avviene per un descrittore di file. Si utilizzano le chiamate alle procedure write(), read(), close(). char inbuf[1000], outbuf[1000]; while (TRUE) { fd = accept (sock, &client, &client_len); while ( read(fd, inbuf, 1000) > 0) {... /* elabora dati prelevati da inbuf */... write(fd, outbuf, 1000); close(fd); PROGRAMMAZIONE SOCKET 9

7 Trasferimento dati: server concorrente 1. Il server concorrente crea, con una chiamata fork(), un processo figlio nel momento in cui il client apre una connessione. 2. Il processo figlio serve il client ed eredita il descrittore di connessione dal padre. 3. Il processo padre resta in attesa di ulteriori connessioni. char inbuf[1000], outbuf[1000]; while (TRUE) { fd = accept (sock, &client, &client_len); if (fork() == 0) {... /* elabora richiesta client nel processo figlio */ /* il processo figlio eredita il descrittore */... exit(0); close(fd); /* rilascio descrittore di connessione nel processo padre */ PROGRAMMAZIONE SOCKET 10 Client: creazione di un socket 1. Il client crea un socket sock = socket(af INET, SOCK STREAM, 0); Il processo di binding non è necessario, ed il numero di porta è fornito dal sistema operativo (a meno che il client non richieda una porta riservata, con numero ½¼¾ ). 2. Per aprire la connessione si devono determinare l indirizzo IP del server, supponendo noto il nome logico dell host il numero di porta a cui risponde il server (se ignoto) µ Si utilizzano le funzioni gethostbyname() e getservbyname(). 3. La chiamata a procedura connect() permette al client di tentare di aprire una connessione utilizzando il descrittore di socket. Il client non genera un descrittore di connessione, ma esegue l I/O utilizzando direttamente il descrittore di socket. La procedura connect() torna -1 in caso di connessione non riuscita. PROGRAMMAZIONE SOCKET 11

8 Trasferimento dati: client La procedura gethostbyname(), torna un puntatore alla struttura dati hostent. struct hostent { char *h_name; /* nome dell host */ char **h_aliases; /* lista degli alias */ int h_addrtype /* tipo di indirizzo */ int h_length; /* lunghezza indirizzo */ char **h_addr_list; /* indirizzi */ ; La procedura getservbyname("servizio", proto) torna il numero di porta a cui è offerto il servizio specificato con il protocollo specificato in una struttura servent, mediante ricerca nel file /etc/services. struct servent { char *s_name; /* official service name */ char **s_aliases; /* alias list */ int s_port; /* port number */ char *s_proto; /* protocol to use */ PROGRAMMAZIONE SOCKET 12 Esempio di file /etc/services # services This file describes various services # available from the TCP/IP subsystem. # It should be consulted instead of using # the numbers in the ARPA include files. # # /30/93 # Author: Fred N. van Kempen, # <waltje@uwalt.nl.mugnet.org> # echo 7/tcp echo 7/udp discard 9/tcp sink null discard 9/udp sink null systat 11/tcp users daytime 13/tcp daytime 13/udp netstat 15/tcp qotd 17/tcp quote chargen 19/tcp ttytst source chargen 19/udp ttytst source ftp-data 20/tcp ftp 21/tcp telnet 23/tcp smtp 25/tcp mail time 37/tcp timserver time 37/udp timserver name 42/udp nameserver whois 43/tcp nicname domain 53/tcp domain 53/udp tftp 69/udp gopher 70/tcp # gopher server finger 79/tcp http 80/tcp # www www 80/tcp # http is more correct pop-3 110/tcp # PostOffice V.3 auth 113/tcp ident # User Verification nntp 119/tcp usenet # Network News Transfer ntp 123/tcp # Network Time Protocol ntp 123/udp # Network Time Protocol imap 143/tcp # imap mail protocol snmp 161/udp # End of services. PROGRAMMAZIONE SOCKET 13

9 Trasferimento dati: client struct hostent struct sock_addr_in *host_info; server; /* leggo nome host da linea di comando */ host_info = gethostbyname(argv[1]); server.sin_addr = *(long*)host_info->h_addr; /* porta supposta nota */ server.sin_port = htons(1997); connect (sock, &server, sizeof server); /* leggo dati */ read(sock, buffer, LINESIZE); PROGRAMMAZIONE SOCKET 14 Codice completo di un client /***********************************************************************/ /* Programma: simple_client.c */ /* Autore: Claudio Casetti */ /* Descrizione: il seguente programma interroga un server */ /* connection-oriented, in ascolto su una porta nota */ /* e stampa il messaggio ricevuto dal client. */ /* Il server puo essere specificato sia attraverso il */ /* suo indirizzo IP sia attraverso l hostname */ /* Sintassi: */ /* simple_client <indirizzoserver> */ /***********************************************************************/ #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #define SERVER_PORT 1997 #define LINESIZE 50 PROGRAMMAZIONE SOCKET 15

10 main (argc, argv) int argc; char *argv[]; { struct sockaddr_in server; struct hostent *host_info; int sock, count; char *server_name, inbuf[linesize]; Codice completo di un client /* Ottengo il nome del server dalla linea di comando: se non c e, uso */ /* localhost, cioe l indirizzo dell interfaccia di rete locale */ server_name = (argc>1)? argv[1] : "localhost"; /* creo la socket in modalita connection-oriented */ sock = socket(af_inet, SOCK_STREAM, 0); if (sock < 0) { perror("creating stream socket"); exit(1); PROGRAMMAZIONE SOCKET 16 Codice completo di un client /* cerco di risolvere l hostname del server */ host_info = gethostbyname(server_name); if (host_info == NULL) { fprintf(stderr, "%s: unknown host: %s\n", argv[0], server_name); exit(2); /* Costruisco la struttura di indirizzo del server */ server.sin_family = host_info->h_addrtype; /* uso memcpy per evitare un errore se l indirizzo IP non ha */ /* una lunghezza compatibile a quella di un long */ memcpy(&server.sin_addr, host_info->h_addr, host_info->h_length); server.sin_port = htons(server_port); /* apro la connessione verso il server */ if (connect(sock, (struct sockaddr *)&server, sizeof server) <0) { perror("impossibile collegarsi al server"); exit(3); printf("connessione Effettuata!\n"); /* prelevo il messaggio del server */ read(sock, inbuf, LINESIZE); printf("il server dice: %s\n", inbuf); PROGRAMMAZIONE SOCKET 17

11 Codice completo di un server /***********************************************************************/ /* Programma: simple_server.c */ /* Autore: Claudio Casetti */ /* Descrizione: il seguente programma attiva un server iterativo */ /* connection-oriented, che resta in ascolto su una porta */ /* e invia un messaggio alla richiesta del client. */ /* Il server puo essere interrogato con un opportuno */ /* client o, in remoto, con il comando: */ /* telnet <indirizzoserver> <##porta> */ /***********************************************************************/ #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <stdio.h> #include <syslog.h> #include <signal.h> #include <errno.h> #define SERVER_PORT 1997 #define MAXLEN 50 PROGRAMMAZIONE SOCKET 18 main() { int sock, fd, client_len; struct sockaddr_in server, client; char outbuf[maxlen]; Codice completo di un server /* definisco il socket descriptor */ sock = socket(af_inet, SOCK_STREAM, 0); if (sock < 0) { perror("creating stream socket"); exit(1); /* definisco i campi di indirizzo del server ed effettuo il bind */ server.sin_family = AF_INET; server.sin_addr.s_addr = htonl(inaddr_any); server.sin_port = htons(server_port); if (bind(sock, (struct sockaddr *) &server, sizeof server) < 0) { perror("binding socket"); exit(2); PROGRAMMAZIONE SOCKET 19

12 Codice completo di un server listen(sock, 5); /* accetto fino a 5 connessioni su sock */ /* entro in loop: attendo di ricevere connessioni e scrivo sul connection */ /* descriptor fd il messaggio del Server */ while (TRUE) { client_len = sizeof(client); if ((fd = accept(sock, (struct sockaddr *) &client, &client_len)) < 0) { perror("accepting connection"); exit(3); /* segnalo l arrivo di una connessione, indicando l indirizzo del client: */ /* ATTENZIONE: il comando ritorna il valore decimale dell indirizzo IP, */ /* non l indirzzo IP in notazione decimale puntata (dotted decimal) */ printf("connessione ricevuta da %lu\n", client.sin_addr.s_addr); /* invio al client il messaggio */ sprintf(outbuf, "Sono il Server!\n"); write (fd, outbuf, strlen(outbuf)); close(fd); /* chiudo la comunicazione con il client */ PROGRAMMAZIONE SOCKET 20 Socket in Java È fornito supporto alla programmazione socket mediante le classi Socket e ServerSocket. La classe Socket fornisce le funzionalità necessarie alla programmazione di un client. La classe ServerSocket fornisce le funzionalità necessarie alla programmazione di un server. PROGRAMMAZIONE SOCKET IN 1

13 Socket in Java: il client 1. Per aprire una connessione si istanzia un oggetto Socket: Socket cconnection = new Socket(hostname, portnumber); // portnumber di tipo int hostname può essere un oggetto di tipo String che rappresenta il nome logico dell host InetAddress che rappresenta un indirizzo IP, ottenuto invocando i metodi getbyname(hostname) o getallbyname(hostname), che torna un array di InetAddress 2. Per trasferire dati si utilizzano stream di input (output) per leggere (scrivere) sul Socket. BufferedInputStream bis = new BufferedInputStream(cConnection.getInputStream()); DataInputStream in = new DataInputStream(bis); BufferedOutputStream bos = new BufferedOutputStream(cConnection.getOutputStream()); DataOutputStream out = new DataOutputStream(bos); 3. Al termine delle operazioni si chiude il Socket ed automaticamente sono chiusi gli stream ad esso associati: cconnection.close(); PROGRAMMAZIONE SOCKET IN 2 Socket in Java: il server 1. Per rendersi disponibile ad accettare connessioni, è necessario istanziare un oggetto ServerSocket: ServerSocket sconnection = new ServerSocket(portnumber); portnumber è il numero di porta a cui il server risponde. 2. Il server si pone poi in ascolto: sconnection.accept(): 3. Per trasferire dati si utilizzano stream di input (output) per leggere (scrivere). 4. Il ServerSocket non è mai chiuso, se non quando termina il programma server. PROGRAMMAZIONE SOCKET IN 3

14 Socket in Java: un esempio Il server (iterativo), a fronte di una richiesta di connessione: invia una domanda casuale al client attende una risposta dal client controlla la correttezza della risposta ed invia notifica al client domanda al client se intende rispondere ad un altra domanda attende una risposta e, se positiva, ripete il processo dall inizio Il client è un applicazione che accetta comandi dalla linea di comando. apre una connessione con il server e si pone in attesa di ricevere la domanda quando riceve la domanda la presenta all utente e legge la risposta dell utente invia la risposta al server e si pone in attesa quando riceve la risposta la presenta all utente e gli domanda se intende proseguire invia la risposta dell utente al server e, se necessario, si pone in attesa di una domanda successiva PROGRAMMAZIONE SOCKET IN 4 Il client Trivia import java.io.*; import java.net.*; public class Trivia { private static final int PORTNUM = 1234; public static void main(string[] arguments) { Socket socket = null; InputStreamReader isr = null; BufferedReader in = null; PrintWriter out = null; String address; // Check the command-line args for the host address if (arguments.length!= 1) { System.out.println("Usage: java Trivia <address>"); return; else address = arguments[0]; PROGRAMMAZIONE SOCKET IN 5

15 Il client Trivia // Initialize the socket and streams try { socket = new Socket(address, PORTNUM); isr = new InputStreamReader(socket.getInputStream()); in = new BufferedReader(isr); out = new PrintWriter(socket.getOutputStream(),true); catch (IOException e) { System.err.println("Exception: couldn t create stream socket " + e.getmessage()); System.exit(1); // Process user input and server responses try { StringBuffer str = new StringBuffer(128); String instr; int c; PROGRAMMAZIONE SOCKET IN 6 Il client Trivia while ((instr = in.readline())!= null) { System.out.println("Server: " + instr); if (instr.equals("bye.")) break; while ((c = System.in.read())!= \n ) str.append((char)c); System.out.println("Client: " + str); out.println(str.tostring()); out.flush(); str.setlength(0); // Close while loop out.close(); in.close(); socket.close(); catch (IOException e) { System.err.println("I/O error: "+ e.tostring()); PROGRAMMAZIONE SOCKET IN 7

16 Il server TriviaServer import java.io.*; import java.net.*; import java.util.random; public class TriviaServer extends Thread { private static final int PORTNUM = 1234; private static final int WAITFORCLIENT = 0; private static final int WAITFORANSWER = 1; private static final int WAITFORCONFIRM = 2; private String[] questions; private String[] answers; private ServerSocket serversocket; private int numquestions; private int num = 0; private int state = WAITFORCLIENT; private Random rand = new Random(); PROGRAMMAZIONE SOCKET IN 8 Il server TriviaServer public TriviaServer() { super("triviaserver"); try { serversocket = new ServerSocket(PORTNUM); System.out.println("TriviaServer up and running..."); catch (IOException e) { System.err.println("Exception: couldn t create socket"); System.exit(1); public static void main(string[] arguments) { TriviaServer server = new TriviaServer(); server.start(); PROGRAMMAZIONE SOCKET IN 9

17 Il server TriviaServer: run() public void run() { // Initialize the arrays of questions and answers Socket clientsocket = null; if (!initqna()) { System.err.println("Error: couldn t initialize questions and answers"); return; // Look for clients and ask trivia questions while (true) { if (serversocket == null) // Wait for a client return; try { clientsocket = serversocket.accept(); catch (IOException e) { System.err.println("Exception: couldn t connect to client socket"); System.exit(1); PROGRAMMAZIONE SOCKET IN 10 Il server TriviaServer: run() try { // Perform the question/answer processing InputStreamReader isr = new InputStreamReader(clientSocket.getInputStream()) BufferedReader is = new BufferedReader(isr); PrintWriter os = new PrintWriter(new BufferedOutputStream(clientSocket.getOutputStream()), false); String outline; // Output server request outline = processinput(null); os.println(outline); os.flush(); while (true) { // Process and output user input String inline = is.readline(); if (inline.length() > 0) { outline = processinput(inline); os.println(outline); os.flush(); if (outline.equals("bye.")) break; PROGRAMMAZIONE SOCKET IN 11

18 Il server TriviaServer os.close(); // Close is.close(); clientsocket.close(); catch (Exception e) { System.err.println("Exception: " + e); e.printstacktrace(); PROGRAMMAZIONE SOCKET IN 12 Il server TriviaServer: initqna() private boolean initqna() { try { File infile = new File("QnA.txt"); FileInputStream instream = new FileInputStream(inFile); byte[] data = new byte[(int)infile.length()]; // Read the questions and answers into a byte array if (instream.read(data) <= 0) { System.err.println("Error: couldn t read questions and answers"); return false; // See how many question/answer pairs there are for (int i = 0; i < data.length; i++) if (data[i] == (byte) \n ) numquestions++; numquestions /= 2; questions = new String[numQuestions]; answers = new String[numQuestions]; PROGRAMMAZIONE SOCKET IN 13

19 Il server TriviaServer: initqna() // Parse the questions and answers into arrays of strings int start = 0, index = 0; boolean isq = true; for (int i = 0; i < data.length; i++) if (data[i] == (byte) \n ) { if (isq) { questions[index] = new String(data, start, i - start - 1); isq = false; else { answers[index] = new String(data, start, i - start - 1); isq = true; index++; start = i + 1; catch (FileNotFoundException e) { System.err.println("Exception: couldn t find the question file"); return false; catch (IOException e) { System.err.println("Exception: I/O error trying to read questions"); return false; return true; PROGRAMMAZIONE SOCKET IN 14 Il server TriviaServer: processinput() String processinput(string instr) { String outstr = null; switch (state) { case WAITFORCLIENT: // Ask a question outstr = questions[num]; state = WAITFORANSWER; break; case WAITFORANSWER: // Check the answer if (instr.equalsignorecase(answers[num])) outstr = "That s correct! Want another? (y/n)"; else outstr = "Wrong, the correct answer is " + answers[num] + ". Want another? (y/n)"; state = WAITFORCONFIRM; break; PROGRAMMAZIONE SOCKET IN 15

20 Il server TriviaServer: processinput() case WAITFORCONFIRM: // See if they want another question if (instr.equalsignorecase("y")) { num = Math.abs(rand.nextInt()) % questions.length; outstr = questions[num]; state = WAITFORANSWER; else { outstr = "Bye."; state = WAITFORCLIENT; break; return outstr; PROGRAMMAZIONE SOCKET IN 16

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

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

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP (VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP D (FKR&OLHQWH6HUYHU Sviluppare un applicazione C/S in cui: il server attende una connessione da parte del client (su MDYDQHW6HUYHU6RFNHW), usa la

Dettagli

Architettura Client-Server

Architettura Client-Server Architettura Client-Server 1. il client manda una richiesta al server 2. il server (in attesa) riceve la richiesta 3. il server esegue il servizio richiesto (generando un thread concorrente) 4. il server

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

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

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

Chat. Si ha un server in ascolto sulla porta 4444. Quando un client richiede la connessione, il server risponde con: Connessione accettata.

Chat. Si ha un server in ascolto sulla porta 4444. Quando un client richiede la connessione, il server risponde con: Connessione accettata. Chat Si ha un server in ascolto sulla porta 4444 Quando un client richiede la connessione, il server risponde con: Connessione accettata. Nome: Il client deve rispondere con lo user name A questo punto

Dettagli

Parte II: Reti di calcolatori Lezione 10

Parte II: Reti di calcolatori Lezione 10 Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Parte II: Reti di calcolatori Lezione 10 Giovedì 3-04-2014 1 Reti per la distribuzione

Dettagli

Parte II: Reti di calcolatori Lezione 12

Parte II: Reti di calcolatori Lezione 12 Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15 Parte II: Reti di calcolatori Lezione 12 Giovedì 16-04-2015 1 Confronto architetture C/S e

Dettagli

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 2 (svolta) Socket Java con connessione Luca Foschini Anno accademico 2009/2010 Esercitazione 2 1 Architettura

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

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 tecnologie in movimento - V anno Unità 4 - Realizzare applicazioni per la comunicazione in rete

ProgettAzione tecnologie in movimento - V anno Unità 4 - Realizzare applicazioni per la comunicazione in rete ProgettAzione tecnologie in movimento - V anno Unità 4 - Realizzare applicazioni per la comunicazione in rete Compito in classe proposto Realizzare un applicazione C/S per trasferire al Client il contenuto

Dettagli

Socket & RMI Ingegneria del Software - San Pietro

Socket & RMI Ingegneria del Software - San Pietro Socket & RMI Ingegneria del Software - San Pietro Socket È possibile trattare la comunicazione di rete allo stesso modo con cui è possibile trattare la lettura da file. La classe Socket rappresenta la

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

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

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

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

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

Transmission Control Protocol

Transmission Control Protocol Transmission Control Protocol Franco Callegati Franco Callegati IC3N 2000 N. 1 Transmission Control Protocol - RFC 793 Protocollo di tipo connection-oriented Ha lo scopo di realizzare una comunicazione

Dettagli

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRGDWDJUDP

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRGDWDJUDP (VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRGDWDJUDP D /LQH&OLHQWH6HUYHU Sviluppare un applicazione C/S in cui: i inviano al server pacchetti (vuoti) che vengono interpretati dal server come richiesta

Dettagli

Tecnologie Web L-A. Java e HTTP. Dario Bottazzi Tel. 051 2093541, E-Mail: dario.bottazzi@unibo.it, SkypeID: dariobottazzi. Java e TCP/IP in a Nutshell

Tecnologie Web L-A. Java e HTTP. Dario Bottazzi Tel. 051 2093541, E-Mail: dario.bottazzi@unibo.it, SkypeID: dariobottazzi. Java e TCP/IP in a Nutshell Tecnologie Web L-A Java e HTTP Dario Bottazzi Tel. 051 2093541, E-Mail: dario.bottazzi@unibo.it, SkypeID: dariobottazzi Java e TCP/IP in a Nutshell! java.net.inetaddress: rappresenta un indirizzo IP e

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

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

Programmare con le Socket

Programmare con le Socket Programmare con le Socket Corso Reti ed Applicazioni Lab Sockets pag. 1 Programmare con le Socket TCP Il Client deve contattare il server - Il processo server deve già essere attivo - Il server deve aver

Dettagli

Operazioni di input/output. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

Operazioni di input/output. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni Operazioni di input/output Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni Input /Output introduzione Per ottenere delle informazioni un programma apre un flusso (Stream)

Dettagli

Programmare con le Socket TCP

Programmare con le Socket TCP Programmare con le Socket TCP Il Client deve contattare il server Il processo server deve già essere attivo Il server deve aver creato una socket che accetta la connessione del client ( socket di benvenuto

Dettagli

Programmazione dei socket con TCP #2

Programmazione dei socket con TCP #2 I Il Server e il Client si scambiano messaggi attraverso la rete mediante un dell API (Application Programming Interface) Telematica II 10. Esercitazione/Laboratorio 3 Server ports Clients user space Socket

Dettagli

Programmare con le Socket TCP in java. 2: Application Layer 1

Programmare con le Socket TCP in java. 2: Application Layer 1 Programmare con le Socket TCP in java 2: Application Layer 1 Il Client contatta il server Il Server: Il processo server è sempre attivo in attesa di connessioni (demone) Crea una socket per accettare la

Dettagli

Reti di Calcolatori:

Reti di Calcolatori: Reti di Calcolatori: Internet, Intranet e Mobile Computing a.a. 2007/2008 http://www.di.uniba.it/~lisi/courses/reti/reti0708.htm dott.ssa Francesca A. Lisi lisi@di.uniba.it Orario di ricevimento: mercoledì

Dettagli

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client Versione 25.4.05 Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture client/server: applicazioni client 1 Architetture client/server: un esempio World wide web è un

Dettagli

Applicazioni web. Parte 5 Socket

Applicazioni web. Parte 5 Socket Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Applicazioni web Parte 5 Michele Tomaiuolo tomamic@ce.unipr.it Protocolli Internet I computer

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

Corsi di Reti di Calcolatori (Docente Luca Becchetti)

Corsi di Reti di Calcolatori (Docente Luca Becchetti) Corsi di Reti di Calcolatori (Docente Luca Becchetti) NOT : le soluzioni proposte sono volutamente sintetiche. Lo studente dovrebbe fare uno sforzo per risolvere i quesiti in modo autonomo, espandendo

Dettagli

Lab. di Sistemi Operativi - Esercitazione n 9- -Thread-

Lab. di Sistemi Operativi - Esercitazione n 9- -Thread- Lab. di Sistemi Operativi - Esercitazione n 9- -Thread- 1 Sommario Esercizi su: Comunicazione tra processi: la funzione pipe() Condivisione dati e codice tra due o più processi: concetto di Thread 2 -

Dettagli

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

Corso di Reti di Calcolatori

Corso di Reti di Calcolatori Corso di Reti di Calcolatori UNICAL Facoltà di Ingegneria a.a. 2002/2003 Esercitazione sul networking in Java (3 a parte) e comandi di rete paolo.trunfio@deis.unical.it 1 Datagrammi Le applicazioni che

Dettagli

Connessioni di rete. Progetto di reti di Calcolatori e Sistemi Informatici - Stefano Millozzi. PdR_09010 - Stefano Millozzi

Connessioni di rete. Progetto di reti di Calcolatori e Sistemi Informatici - Stefano Millozzi. PdR_09010 - Stefano Millozzi Connessioni di rete Progetto di reti di Calcolatori e Sistemi Informatici - Stefano Millozzi 1 Socket orientato alla connessione o non orientato alla connessione 2 Socket in astratto 3 Socket modalità

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

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

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

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Autore: Prof. Agostino Sorbara ITIS "M. M.

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

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

TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI

TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI Confronto tra ISO-OSI e TCP/IP, con approfondimento di quest ultimo e del livello di trasporto in cui agiscono i SOCKET. TCP/IP

Dettagli

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni server

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni server Versione 30.5.05 Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture client/: applicazioni 1 La logica dei socket Abbiamo visto che un applicazione client si connette

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

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

Corso di Reti di Calcolatori. Datagrammi

Corso di Reti di Calcolatori. Datagrammi Corso di Reti di Calcolatori UNICAL Facoltà di Ingegneria a.a. 2002/2003 Esercitazione sul networking in Java (3 a parte) e comandi di rete paolo.trunfio@deis.unical.it 1 Datagrammi Le applicazioni che

Dettagli

$OFXQLVWUXPHQWLGLXVRFRPXQH SHUO DQDOLVLGHOORVWDWRGHOVLVWHPD

$OFXQLVWUXPHQWLGLXVRFRPXQH SHUO DQDOLVLGHOORVWDWRGHOVLVWHPD $OFXQLVWUXPHQWLGLXVRFRPXQH SHUO DQDOLVLGHOORVWDWRGHOVLVWHPD 9HULILFDUHFRQLVHJXHQWLFRPDQGLORVWDWRGHOVLVWHPD FRQVXOWDUHLOPDQLQOLQHDman nomecomando ILOHV\VWHP GI mostra lo stato di occupazione dei dischi

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

Networking. Mauro Migliardi Ph. D.

Networking. Mauro Migliardi Ph. D. Software Architectures Networking Mauro Migliardi Ph. D. A word of wisdom The word networking strikes fear in the hearts of many programmers. Fear not! Using the networking capabilities provided in the

Dettagli

Altri tipi di connessione

Altri tipi di connessione Altri tipi di connessione Francesca Martelli f.martel@di.unipi.it Socket Un socket è una connessione a una porta su un computer remoto, che è usata per scambiare informazioni con comandi HTTP Supponiamo

Dettagli

Applicazioni distribuite

Applicazioni distribuite Applicazioni distribuite Maurizio Cozzetto 1 agosto 2009 Un pò di teoria Ricordiamo che un'applicazione distribuita è un'applicazione composta da più programmi (almeno 2) posti in esecuzione su macchine

Dettagli

GESTIONE DEI PROCESSI

GESTIONE DEI PROCESSI Sistemi Operativi GESTIONE DEI PROCESSI Processi Concetto di Processo Scheduling di Processi Operazioni su Processi Processi Cooperanti Concetto di Thread Modelli Multithread I thread in Java Concetto

Dettagli

Dal protocollo IP ai livelli superiori

Dal protocollo IP ai livelli superiori Dal protocollo IP ai livelli superiori Prof. Enrico Terrone A. S: 2008/09 Protocollo IP Abbiamo visto che il protocollo IP opera al livello di rete definendo indirizzi a 32 bit detti indirizzi IP che permettono

Dettagli

UDP. Livello di Trasporto. Demultiplexing dei Messaggi. Esempio di Demultiplexing

UDP. Livello di Trasporto. Demultiplexing dei Messaggi. Esempio di Demultiplexing a.a. 2002/03 Livello di Trasporto UDP Descrive la comunicazione tra due dispositivi Fornisce un meccanismo per il trasferimento di dati tra sistemi terminali (end user) Prof. Vincenzo Auletta auletta@dia.unisa.it

Dettagli

Datagrammi. NOTA: MulticastSocket estende DatagramSocket

Datagrammi. NOTA: MulticastSocket estende DatagramSocket Datagrammi Le applicazioni che comunicano tramite socket possiedono un canale di comunicazione dedicato. Per comunicare, un client ed un server stabiliscono una connessione, trasmettono dati, quindi chiudono

Dettagli

I file di dati. Unità didattica D1 1

I file di dati. Unità didattica D1 1 I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità

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

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

Controllo Winsock di Visual Basic

Controllo Winsock di Visual Basic Controllo Winsock di Visual Basic Il controllo Winsock, non visibile all'utente, consente di accedere ai servizi di rete TCP e UDP. Per creare applicazioni client o server non è necessario conoscere in

Dettagli

Programmazione distribuita in Java. Socket & Client-Server

Programmazione distribuita in Java. Socket & Client-Server Programmazione distribuita in Java Socket & Client-Server 1 Strumenti per networking Libreria java.net Socket (Astrazione per una presa di comunicazione) Serializzazione Socket Per comunicare si apre una

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

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica Esercitazioni di PROGETTAZIONE DEL SOFTWARE (Corsi di Laurea in Ingegneria Informatica ed Automatica ed Ingegneria

Dettagli

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it MODELLO CLIENT/SERVER Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it POSSIBILI STRUTTURE DEL SISTEMA INFORMATIVO La struttura di un sistema informativo

Dettagli

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

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

Dettagli

7 Esercitazione (svolta): Callback. Polling. Java RMI: callback. Server. Server. Client. Client. due possibilità:

7 Esercitazione (svolta): Callback. Polling. Java RMI: callback. Server. Server. Client. Client. due possibilità: 7 Esercitazione (svolta): due possibilità: Java RMI: callback Molte applicazioni richiedono un meccanismo publish/subscribe I partecipanti (client) necessitano di notifiche da parte del coordinatore (server)

Dettagli

20 - Input/Output su File

20 - Input/Output su File 20 - Input/Output su File Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it

Dettagli

R.Focardi Laboratorio di Ingegneria del Software 6. 1

R.Focardi Laboratorio di Ingegneria del Software 6. 1 Networking Java permette comunicazioni in rete basate sul concetto di socket, che permette di vedere la comunicazione in termini di flusso (stream), in modo analogo all input-output di file, usando Stream

Dettagli

Organizzazione della lezione. Lezione 18 Remote Method Invocation - 6. (con callback) L accesso al registry per il rebind()

Organizzazione della lezione. Lezione 18 Remote Method Invocation - 6. (con callback) L accesso al registry per il rebind() Organizzazione della lezione Lezione 18 Remote Method Invocation - 6 Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli Studi di Salerno

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA6 A1 I file testo 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti Modello produttore consumatore Operazioni logiche su struttura file 2 1 Introduzione

Dettagli

Telematica II 12. Esercitazione/Laboratorio 4

Telematica II 12. Esercitazione/Laboratorio 4 Server UDP in JAVA Telematica II 12. Esercitazione/Laboratorio 4 DayTime daemon UDP Port 13 obiettivo realizzazione di un servizio per l invio della data/orario del server al client utilizzo di un datagram

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

Un flusso (stream) è una astrazione che produce e/o consuma informazioni.

Un flusso (stream) è una astrazione che produce e/o consuma informazioni. I programmi Java eseguono l I/O mediante i flussi. Un flusso (stream) è una astrazione che produce e/o consuma informazioni. Ogni flusso è collegato ad un dispositivo fisico dal sistema di I/O di java.

Dettagli

Reti di Telecomunicazione Lezione 6

Reti di Telecomunicazione Lezione 6 Reti di Telecomunicazione Lezione 6 Marco Benini Corso di Laurea in Informatica marco.benini@uninsubria.it Lo strato di applicazione protocolli Programma della lezione Applicazioni di rete client - server

Dettagli

Programmazione di rete in Java

Programmazione di rete in Java Programmazione di rete in Java Reti di calcolatori Una rete di calcolatori è un sistema che permette la condivisione di dati informativi e risorse (sia hardware sia software) tra diversi calcolatori. Lo

Dettagli

Università degli Studi di Modena e Reggio Emilia. Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE E APPLICAZIONI WEB. Http con java, URL

Università degli Studi di Modena e Reggio Emilia. Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE E APPLICAZIONI WEB. Http con java, URL Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE E APPLICAZIONI WEB Http con java, URL Ing. Marco Mamei Anno Accademico 2004-2005 M. Mamei - Tecnologie

Dettagli

MagiCum S.r.l. Progetto Inno-School

MagiCum S.r.l. Progetto Inno-School MagiCum S.r.l. Progetto Inno-School Area Sviluppo Web Autore: Alessio Bernardo Revisione: 1 Data: 23/05/13 Titolo: Sviluppo piattaforma e-learning e sviluppo siti web File: Documentazione tecnica Sito:

Dettagli

Una prima applicazione in C per l utilizzo delle socket

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

Dettagli

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

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

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

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

Lab. di Sistemi Operativi - Esercitazione n 7- -Gestione dei processi Unix-

Lab. di Sistemi Operativi - Esercitazione n 7- -Gestione dei processi Unix- Lab. di Sistemi Operativi - Esercitazione n 7- -Gestione dei processi Unix- 1 Sommario Esercizi sulla gestione dei processi Creazione di un nuovo processo: fork Sincronizzazione tra processi: wait 2 -

Dettagli

appunti delle lezioni Architetture client/server: applicazioni server

appunti delle lezioni Architetture client/server: applicazioni server Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture /: applicazioni 1 La logica dei Abbiamo visto che un applicazione si connette e comunica con un applicazione mediante

Dettagli

Reti di Telecomunicazione Lezione 7

Reti di Telecomunicazione Lezione 7 Reti di Telecomunicazione Lezione 7 Marco Benini Corso di Laurea in Informatica marco.benini@uninsubria.it Il protocollo Programma della lezione file transfer protocol descrizione architetturale descrizione

Dettagli

Esercitazione. Formato di compitini e compiti: domande ed esercizi "closed book" G. Ferrari - Reti di calcolatori.

Esercitazione. Formato di compitini e compiti: domande ed esercizi closed book G. Ferrari - Reti di calcolatori. Esercitazione Formato di compitini e compiti: domande ed esercizi "closed book" Esercitazione - 1 Domanda 1 In una comunicazione di rete tra due host, quale è il client e quale è il server. Necessario:

Dettagli

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) 12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,

Dettagli

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

Dettagli

Esercitazione [5] Input/Output su Socket

Esercitazione [5] Input/Output su Socket Esercitazione [5] Input/Output su Socket Leonardo Aniello - aniello@dis.uniroma1.it Daniele Cono D'Elia - delia@dis.uniroma1.it Sistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi di Calcolo

Dettagli

Arduino Quick Ethernet library Reference

Arduino Quick Ethernet library Reference Arduino Quick Ethernet library Reference Di Luca Panebianco per Automazione Open Source Versione 1.0 www.xploreautomation.com Pag 1 Indice dei contenuti 1 Classe Ethernet...3 2 Classe IPAddress...3 3 Classe

Dettagli

ESERCIZI DI PROGRAMMAZIONE C IN AMBIENTE UNIX

ESERCIZI DI PROGRAMMAZIONE C IN AMBIENTE UNIX ESERCIZI DI PROGRAMMAZIONE C IN AMBIENTE UNIX Introduzione In questa dispensa sono stati raccolti alcuni esercizi di programmazione C in ambiente Unix, tratti dagli esami di Sistemi Operativi svoltisi

Dettagli

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

Corso di Sistemi Operativi Esercitazioni

Corso di Sistemi Operativi Esercitazioni Università di Roma La Sapienza Dipartimento di Informatica e Sistemistica Corso di Sistemi Operativi Esercitazioni Lezione IX Esempio di progetto Server HTTP 0.9 Server HTTP 0.9 Specifiche Si chiede di

Dettagli

Server Sequenziale. Server Concorrente. Esercitazione: Socket Java con connessione

Server Sequenziale. Server Concorrente. Esercitazione: Socket Java con connessione Esercitazione: Socket Java con connessione Sviluppare un applicazione C/S che effettui il trasferimento di un file dal client al server (put) usando una connessione. In particolare nel servizio: il client

Dettagli

Sicurezza delle reti. Monga. Il livello di trasporto. Problemi di sicurezza intrinseci. Riassunto. Porte. Sicurezza delle reti.

Sicurezza delle reti. Monga. Il livello di trasporto. Problemi di sicurezza intrinseci. Riassunto. Porte. Sicurezza delle reti. 1 Mattia Lezione III: I protocolli di base Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it a.a. 2010/11 1 c 2011 M.. Creative Commons Attribuzione-Condividi

Dettagli

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine. ESERCIZIARIO Risposte ai quesiti: 2.1 Non sono necessarie modifiche. Il nuovo protocollo utilizzerà i servizi forniti da uno dei protocolli di livello trasporto. 2.2 Il server deve essere sempre in esecuzione

Dettagli