/**{f}
*
EchoServer.java
*
Classe che gestisce la richiesta di connessione NON MULTITHREADING al server
*
da parte del client per la scrittura-lettura del client-server
*
attraverso l'uso di socket
*
@version 1.00 01/03/10
*
@author Bertolini Marta & Girotto Cristiano
*/
import
java.net.*; // package contenente gli oggetti Socket
import
java.io.*; // package contenente
IOStream
//
definizione della classe
public
class EchoServer
{
//
non sono presenti campi in quanto tutto è gestito dal metodo main
public static void main(String[] args)
{
// i metodi relativi agli oggetti Socket e IOStream devono essere
inseriti
// in try-catch in quanto possono essere generate delle eccezioni
try
{
// creazione del serversocket sulla porta 1234
ServerSocket SS = new ServerSocket(1234);
// definizione dell'oggetto socket
Socket s;
// ciclo infinito in cui il server gestisce una chiamata dal client
// e poi ritorna ad attedere una seconda chiamata
// attenzione NON E' MULTITHREADING
while(true){
System.out.println("In attesa di chiamate");
// attesa di una connessione da parte di un client che richiede il
servizio sulla
// porta del serversocket, nel caso corrente 1234.
// Il metodo accept di serversocket restituisce un oggetto Socket
// che nel nostro caso viene fatto corrispondere al riferimento s
s = SS.accept();
// 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()));
//lettura attraverso l'oggetto din sul socket s: si tratta del messaggio
inviato
// dal client che ha richiesto la connessione
String risposta = din.readLine();
System.out.println("Ricevuto "+risposta);
System.out.println("Risposta al client");
//scrittura attraverso l'oggetto dout sul socket s: si tratta del
messaggio che il server invia
// al client che ha richiesto la connessione
dout.writeBytes("Server: ricevuto "+risposta+" \n");
// uso la funzione flush() per svuotare il buffer di dout.
dout.flush();
// chiudo i due buffer IO
dout.close();
din.close();
}// while
}// try
// catch: gestione di un'eventuale anomalia
catch (Exception e)
{
System.out.println("Errore in Server.main "+e);
}// catch
} // main
}
// class EchoServer