Anteprima
Vedrai una selezione di 8 pagine su 87
Reti di Calcolatori corso completo (senza necessità di integrare materiale da fonti esterne, per  superare l'esame con il migliore dei voti Pag. 1 Reti di Calcolatori corso completo (senza necessità di integrare materiale da fonti esterne, per  superare l'esame con il migliore dei voti Pag. 2
Anteprima di 8 pagg. su 87.
Scarica il documento per vederlo tutto.
Reti di Calcolatori corso completo (senza necessità di integrare materiale da fonti esterne, per  superare l'esame con il migliore dei voti Pag. 6
Anteprima di 8 pagg. su 87.
Scarica il documento per vederlo tutto.
Reti di Calcolatori corso completo (senza necessità di integrare materiale da fonti esterne, per  superare l'esame con il migliore dei voti Pag. 11
Anteprima di 8 pagg. su 87.
Scarica il documento per vederlo tutto.
Reti di Calcolatori corso completo (senza necessità di integrare materiale da fonti esterne, per  superare l'esame con il migliore dei voti Pag. 16
Anteprima di 8 pagg. su 87.
Scarica il documento per vederlo tutto.
Reti di Calcolatori corso completo (senza necessità di integrare materiale da fonti esterne, per  superare l'esame con il migliore dei voti Pag. 21
Anteprima di 8 pagg. su 87.
Scarica il documento per vederlo tutto.
Reti di Calcolatori corso completo (senza necessità di integrare materiale da fonti esterne, per  superare l'esame con il migliore dei voti Pag. 26
Anteprima di 8 pagg. su 87.
Scarica il documento per vederlo tutto.
Reti di Calcolatori corso completo (senza necessità di integrare materiale da fonti esterne, per  superare l'esame con il migliore dei voti Pag. 31
1 su 87
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

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

Dettagli
Publisher
A.A. 2017-2018
87 pagine
1 download
SSD Ingegneria industriale e dell'informazione ING-INF/05 Sistemi di elaborazione delle informazioni

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher matrix0909 di informazioni apprese con la frequenza delle lezioni di Reti di calcolatori e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli studi della Campania "Luigi Vanvitelli" o del prof Rak Massimiliano.