/**{f}
*
EchoClient.java
*
Classe che gestisce la scrittura-lettura del client-server
*
attraverso l'uso di socket
* @version 1.00 01/03/01
*
@author Bertolini Marta & Girotto Cristiano
*/
import
java.net.*; // package contenente gli oggetti Socket
import
java.io.*; // package contenente
IOStream
//
definizione della classe
public
class EchoClient
{
//
non sono presenti campi in quanto tutto è gestito dal metodo main
public static void main(String[] args)
{
// controllo se il numero di parametri d'ingresso è corretto:
// infatti devono essere usati due parametri d'ingresso: il primo
// è una stringa che identifica l'indirizzo IP del server
// (ad esempio localhost, 127.0.0.1, 192.168.18.20..); il secondo
// parametro invece è la stringa che si invierà al server.
// Le due stringhe sono contenute nel vettore di stringhe args
// e precisamente le componenti args[0] e args[1].
if(args.length<2) {
System.out.println("
Numero di parametri errato");
System.out.println("
Usare: java Client <IPServer> <messaggio>");
System.out.println("
Esempio: java Client 127.0.0.1 ByeBye");
return;
}
// i metodi relativi agli oggetti Socket e IOStream devono essere
inseriti
// in try-catch in quanto possono essere generate delle eccezioni
try
// definizione dell'oggetto socket: in questo caso è precisato
// nel metodo costruttore l'indirizzo del server, come primo parametro
// ed il numero di porta, come secondo parametro.
Socket s = new Socket(args[0], 1234);
// Creazione degli oggetti dout e din che rappresentano due Buffer di IO
// attraverso i quali è possibile scrivere e leggere da socket
DataOutputStream dout = new DataOutputStream(s.getOutputStream());
BufferedReader din = new BufferedReader(new InputStreamReader(s.getInputStream()));
System.out.println("Invio "+args[1] +" al server!");
//scrittura attraverso l'oggetto dout sul socket s: si tratta del
messaggio che il client invia
// al server a cui il client ha richiesto la connessione
dout.writeBytes(args[1]+"\n");
// uso la funzione flush() per svuotare il buffer di dout.
dout.flush();
// gestione della risposta
String risposta;
System.out.println("Aspetto risposta dal server!");
// lettura attraverso l'oggetto din sul socket s: si tratta della risposta
inviata
// dal server al client; in questo caso specifico viene gestito un numero
di righe
// di risposta anche maggiore di 1
while
((risposta=din.readLine())!=null)
{
System.out.println(risposta);
} //
while
} // try
// catch: gestione di un'eventuale anomalia
catch (Exception e)
{
System.out.println("Errore in Client.main "+e);
} //
} // main
}