/* * Andrea Caravano (www.andreacaravano.net) * * Esercizio 2: "StoAspettando" * Descrizione: Progettare un’applicazione Client/Server Multithread in Java che attenda, per ogni client collegato, * un numero non precisato di stringhe. L’invio del client termina quando la stringa ricevuta dal server * corrisponde a “FINE-INVIO”. * Prima di concludere la comunicazione, vengono inviate nuovamente al client le stringhe ricevute, trasformate * in maiuscolo. * * Possibile soluzione * Componente Client * * N.B.: L'esercizio scaturisce dalla sola fantasia dell'autore e intende rappresentare una applicazione didattica. * I dettagli in esso contenuti potrebbero non essere corrispondenti alla realtà e intendono valutare le abilità nella gestione delle strutture dati proposte. */ import java.io.*; import java.net.Socket; import java.net.UnknownHostException; import java.util.Scanner; public class ClientStoAspettando { static final String INDIRIZZOSERVER = "127.0.0.1"; static final int PORTASERVER = 9000; public static void main(String[] args) { try (Socket processoClient = new Socket(INDIRIZZOSERVER, PORTASERVER)) { System.out.format("Connesso al processo server avviato con il seguente indirizzo di socket: %s%n", processoClient.getRemoteSocketAddress()); System.out.format("Processo client avviato con il seguente indirizzo di socket: %s%n", processoClient.getLocalSocketAddress()); avviaComunicazione(processoClient); } catch (UnknownHostException e) { System.err.println("Server non contattabile. Possibile errore di immissione."); } catch (IOException e) { System.err.format("Errore connessione con server: %s%n", e.getMessage()); } } private static void avviaComunicazione(Socket processoClient) throws IOException { BufferedReader BR = new BufferedReader(new InputStreamReader(processoClient.getInputStream(), "UTF-8")); PrintWriter PW = new PrintWriter(new OutputStreamWriter(processoClient.getOutputStream(), "UTF-8"), true); Scanner S = new Scanner(System.in); String stringaClient = " "; while (stringaClient.equals("FINE-INVIO") == false) { System.out.print("Immetti la stringa da inviare al server: "); stringaClient = S.nextLine(); PW.println(stringaClient); } PW.println(stringaClient); S = new Scanner(BR.readLine()); int contaStringhe = S.nextInt(); System.out.println(); System.out.println("Stringhe ricevute dal server: "); for (int i = 0; i < contaStringhe; i++) { String stringaRicevuta = BR.readLine(); System.out.println(stringaRicevuta); } } }