Java lezione 9

5
Java e le reti Package java.net

Transcript of Java lezione 9

Page 1: Java lezione 9

Java e le reti

Package java.net

Page 2: Java lezione 9

Inet AddressJava mette a disposizione numerose classi utili per

sviluppare applicazioni di rete con estrema semplicità. La prima di queste e la più semplice è InetAddress. InetAddress localHostAddress= InetAddress.getLocalHost();

Determina l’indirizzo del computer Locale.InetAddress[] addresses = InetAddress.getAllByName(host);

Determina un array di indirizzi dell’host indicato.

Page 3: Java lezione 9

Realizzazione di un serverLe applicazioni di rete sono realizzate attraverso un’architettura di tipo Client-Server. Le applicazioni Server sono programmi che in genere rimangono in attesa su una porta di protocollo e all’arrivo di una richiesta su quella porta rispondono al cliente con un servizio.

ServerSocket s = new ServerSocket(8189); Socket incoming = s.accept( );Nell’esempio il server è in ascolto sulla porta 8189 e all’arrivo di una richiesta viene creato un Socket (un canale di comunicazione) con il client.BufferedReader in = new BufferedReader (new InputStreamReader(incoming.getInputStream()));PrintWriter out = new PrintWriter(incoming.getOutputStream(), true);Attraverso il Socket è possibile creare degli stream di input o di output per leggere da o inviare al Client dei dati.

Page 4: Java lezione 9

Server e ThreadIl compito di un server è in genere quello di servire più clienti, quindi è indispensabile che ad ogni richiesta in arrivo il server operi l’operazione di fork, cioè generi un thread per gestire la richiesta e nel frattempo resti comunque in ascolto.int i=0;ServerSocket s = new ServerSocket(8189); for (;;) { Socket incoming = s.accept( );

ThreadedEcho runner=new ThreadedEcho (incoming, i++)runner.start();

}Dove la classe Thread creerà nel metodo run gli stream specifici di comunicazione con il Client.

(NOTA: per testare il server è possibile usare come client telnet o l’Hyperterminal)

Page 5: Java lezione 9

Esempio di ClientA differenza del Server il client ha il compito di iniziare la

comunicazione, di conseguenza la prima cosa che fa è istanziare un canale di comunicazione (Socket)Socket s = new Socket(“10.10.150.9”,8080); BufferedReader in = new BufferedReader

(new InputStreamReader(s.getInputStream()));PrintWriter out=new PrintWriter(s.getOutputStream());out.println(“get index.html”); String line; while ((line = in.readLine())!=null) {System.out.println(line);}Nell’esempio viene aperto un Socket con l’IP 10.10.150.9

sulla porta 8080