This entry was posted on Sunday, March 15th, 2009 at 2:28 pm and is filed under JAVA, Tutorial. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

simple client server in java
In questa breve guida tratteremo come realizzare una semplice implementazione di un sistema client/server realizzato in java.
Andremo ad esporre con del codice java, come realizzare questi due moduli riportando il codice con delle spiegazioni passo passo su cosa servono le varie linee scritte.
Ma descriviamo adesso un pò cosa fanno in linea di massima questi due moduli che analizzaremo in dettaglio di seguito.
Server:
Il modulo server instaura una connessione con un client su richiesta, è strato introdotto un numero nella costante MAX_CONNECTION per limitare il numero massimo di client accettabili.
Una volta che il server avrà accettato la connessione con il client, egli inoltrerà la socket di riferimento ad una subroutine ausiliaria che avrà lo scopo di esaudire le sue richieste.
Nell’esempio mi sono limitato a far si che il client riceva una stringa e la stampi a video.
Ecco adesso il codice del server:
package simpleserver;
/*Importiamo le librerie che ci serviranno*/
import java.io.*;
import java.net.*;
/**
*
* @author roberto
*/
public class Server {
/*Definizione del numero massimo di connessioni*/
private final static int MAX_CONNECTION = 10;
/*Inizio procedura principale del server*/
public static void StartServer(){
/*Dichiaro la socket del server*/
ServerSocket sk = null;
/*Dichiaro la socket del client*/
Socket client = null;
/*variabile contatore per il numero massimo
* di client*/
int i = 0;
/*Cattura degli errori nel caso in cui
* si verificasse un eccesione IOException
* nello stabilimento di una connessione
* tra server e client*/
try{
/*Creo un nuovo socket del server in cui indico
* il numero della porta 80 ed il numero massimo
* di connessioni accettabili*/
sk = new ServerSocket(8080, MAX_CONNECTION);
/*ciclo per il limite di connessioni*/
while(i < MAX_CONNECTION){
/*accetto la connessione del client*/
client = sk.accept();
/*evoco una subroutine che svolga le funzioni
* dedicate al client, si lascia libera implementa-
* zione all'utente*/
ServiziClient(client);
i++;
}
/*chiusura della socket del server*/
sk.close();
}
/*Gestione Errori*/
catch(IOException e){
System.out.println("Errore di I/O.");
}
}
/*Questa procedura si occupa di una semplice lettura su canale aperto attraverso la socket,
* del messaggio proveniente dal client in formato stringa.*/
private static void ServiziClient(Socket s){
try{
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
String msg;
while ((msg = br.readLine())!= null){
System.out.println(msg);
}
br.close();
}catch(IOException e){
System.out.println("Errore nella lettura su canale");
}
}
}
Client:
Molto semplicemente si occupa di richiedere una connessione con il server e poi inoltrare ad esso una stringa.
Ecco adesso il codice del server:
package simpleclient;
/*Importiamo le librerie che ci serviranno*/
import java.io.*;
import java.net.*;
/**
*
* @author roberto
*/
public class Client {
public static void StartClient(){
/*Dichiaro la socket del server*/
Socket s = null;
/*Dichiaro il canale di scrittura*/
PrintWriter pr = null;
try{
/*Connetto attravero la socket il client al server
* localhost sulla porta 80*/
s = new Socket("localhost", 8080);
/*Apro il canale di scrittura attraverso la socket*/
pr = new PrintWriter(s.getOutputStream());
pr.print("Ciao server!");
/*Chiudo in ordine il canale di scrittura e la socket*/
pr.close();
s.close();
}
/*Cattuto l'errore di host sconosciuto che previene
* eventuali url sbagliati del server*/
catch(UnknownHostException e){
System.out.println("Errore nel riconoscimento dell'Host.");
}
/*Catturo eventuali errori di scrittura su canale*/
catch(IOException d){
System.out.println("Errore si I/O.");
}
}
}
Con questo abbiamo illustrato in modo molto semplice come creare un semplice sistema client server con java.
Eistono ovviamente tecnologie diverse per implementarli, ad esempio il server potrebbe implementare un sistema di risposta per il client, o ideare un protocollo per la sincronizzazione tra client e server o anche usare un sistema multi-thread.
Sono cose che comunque vedremo in seguito, per adesso ci limitiamo a questo esempio fornendo il codice in download.
Buon lavoro!
simpleCS (5.5 KiB, 43 hits)
You need to be a registered user to download this file.
Leave a Reply

