Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
SCONOSCIUTO!");
}catch(Exception e){ //non ho messo
l'eccezione di IO ma ho messo generica per qualsiasi
problema sconosciuto diciamo che è impossibile gestire la
connessione System.err.println("ERRORE DAL
CLIENT!,impossibile stabilire la connessione!");
}
return mioSocket;
}
public void comunica(){
//devo mandare qualcosa al server e vedere cosa
ci risponde
try{ tastiera = new BufferedReader(new
InputStreamReader(System.in)); //scanner da
tastiera System.out.println("MESSAGGIO DA INVIARE AL
SERVER: "); String messaggio = tastiera.readLine();
//vado a leggere ciò che scriviamo da tastiera e salvo
nella Stringa messaggio
System.out.println("INVIO MESSAGGIO : " +
messaggio); out.writeBytes(messaggio + "\n "); //vado a
scrivere sul canale di output il contenuto della stringa
messaggio Page 2
Client.java
System.out.println("IN ATTESA DI UNA
RISPOSTA......");
//ora il server può andare a leggere ciò che
scriviamo dal canale di output,e ci invierà una risposta
sul canale di input
String ricevuto = in.readLine(); //ricevo il
messaggio del server dal canale di input e salvo nella
stringa ricevuto
System.out.println("LA RISPOSTA DEL SERVER è
CHE LA STRINGA CONTENEVA : " + ricevuto + " CARATTERI");
}catch(IOException e){
System.out.println("ERRORE!");
}
}
public static void main(String args[]){
Client c=new Client();
c.connetti();
c.comunica();
}
} Page 3
Server.java
import java.io.*;
public class Server {
ServerSocket server = null; //dichiaro socket del
server che all inizo finche non è stabilita connessione
non c'è ancora
Socket SocketClient = null;
int porta=7400; //deve essere superiore a 1023
e minore di 65535,è la porta del server,USO NUMERO A 4
CIFRE XKE SONO QUELLE NON USATE PER LE PORTE STANDARD
//devo simulare i flussi di richiesta e
risposta,dichiaro 2 oggetti stream,CIOè CREO 2 BUFFER PER
LA LETTURA E PER LA SCRITTURA
DataOutputStream out;
DataInputStream in; //questi due oggetti ci
permetteranno di fare richieste e avere risposte
//saranno gli oggetti
fondamentali della comunicazione
//creo il metodo per la connessione,CIOè DEVO
IMPLEMENTARE TUTTO CIò CHE FA tcp DENTRO L'OGGETTO SOCKET
public Socket attendi(){
try{
System.out.println("INIZIALIZZO IL
SERVER........");
server = new ServerSocket(porta); //
inizializziamo il servizio creando la socket
System.out.println("SERVER PRONTO,IN ASCOLTO
SULLA PORTA: " + porta); //HO CREATO lA SOCKET E ORA
POSSO METTERMI IN ATTESA
SocketClient = server.accept(); //ricevuta
richiesta connessione da un client,restituisce una
Page 1
Server.java
variabile di tipoo socket
System.out.println("IL SERVER HA STABILITO LA
CONNESSIONE CON IL CLIENT! ");
server.close(); //cosi evitiamo connessioni
multiple,impediamo ad altri computer di connettersi alla
nostra connessione,facciamo una connessione uno a
uno,cioe punto punto invece di una multicast , è una
scelta mia,cioe solo un client deve connnetersi al mio
server //apro gli stream di input eoutput per leggere e
scrivere nella connessione appena ricevuta
in=new
DataInputStream(SocketClient.getInputStream()); //creo
buffer per ricevere dati dalla socketclient
out = new
DataOutputStream(SocketClient.getOutputStream()); //ucreo
buffer per mandare dati sulla socket client
//ricordiamo TCP ha una comunicazione full
duplex,cioè entrambi possono leggere e scrivere,quindi ho
per entrambi(client server)buffer di ingresso e uscita
}catch(IOException e){
System.out.println("ERRORE!"); //ci
vuole il try catch perche ci possono essere errori vari
siccome parliamo di internet(problemi connessione,input
output,ecc),CIOè PROVO A FARE TUTTE QUESTE AZIONI CHE PER
VARI PROBLEMI POTREBBERO NON RIUSCIRE
}
return SocketClient; //restituiamo il socket del
client }
public void comunica(){
//il server dovrà mettersi in ascolto per
vedere se il client gli scrive qualcosa,ricevere ,
elaborare e rispedire
//so che il client scrive sullo stream di
input try{ Page 2
Server.java
System.out.println("ASPETTO UN MESSAGGIO
DAL CLIENT.....");
String lettura= in.readLine(); //LEGGO DALLO
STREAM DI INPUT e metto in una stringa
System.out.println("MESSAGGIO RICEVUTO: " +
lettura); int risposta = lettura.length(); //creo
intero di risposta col metodo della classe STRING che
contiene il numero di caratteri della stringa ricevuta
System.out.println("IL SERVER HA CALCOLATO IL
SEGUENTE NUMERO DI CARATTERI CHE COMPONGONO LA STRINGA: "
+ risposta);
out.writeBytes(risposta + "\n" ) ; //lo
scriviamo sullo stream di output,usiamo questo metodo che
prende una stringa come parametro ma ci vuola cnhe il
carattere terminatore,il client può andare a vedere
questo messaggio sullo stream di output
SocketClient.close();
System.out.println("SERVIZIO RICEVUTO! LA
CONNESSIONE Si è CHIUSA!");
}catch(IOException e){
System.out.println("ERRORE");
}
} public static void main(String[] args) {
Server s = new Server (); //creo istanza
server s.attendi(); //inizializzo server
e lo metto in scolto sulla sua porta che è la 6789
s.comunica();
}
} Page 3