Programmazione server-client

di il
1 risposte

Programmazione server-client

Salve. è la prima volta che scrivo in questo sito e da un po di settimane sto cercando di imparare a programma da solo, quindi guardando video o leggendo qualche manuale. Ho trovato un esercizio su un sito: -Scrivere un’applicazione java che svolga la seguente elaborazione:
CLIENT
invia dei dati al server: l’invio dei dati termina quando viene inviato un valore finale (es. END).I dati sono letti da tastiera (come flussi di byte) e, per poter essere elaborati dal server, devono rappresentare dei numeri interi: quindi, ad esempio, il dato 123 sarà un dato valido, mentre il dato 1A2 dovrà essere scartato dal server.
SERVER
Il server effettuerà la seguente elaborazione sui dati ricevuti dal client: Calcolo della media dei valori introdotti, conteggio del numero di dati validi tra quelli ricevuti dal client, conteggio del numero di dati scartati. Il risultato delle elaborazioni dovrà essere inviato al server

Allora io sono riuscito ho fatto due classi, una server e una client e ho scritto questo
codice:

import java.io.*;
import java.net.*;
public class Client { 
        public static void main(String[] args) {
      String server = "localhost";
      Socket connessione = null;
      BufferedReader sIN = null, stdIn = null;
      PrintWriter sOUT = null;
       try {      // crea il socket   
         connessione = new Socket(server, ServerClient.PORT); 
     System.out.println("echoclient: started");
      System.out.println("CLIENT SOCKET"+connessione ); 
     System.out.println();      // crea stream di input da SOCKET  
    InputStreamReader input = new InputStreamReader(connessione.getInputStream()) ;
      sIN = new BufferedReader(input);  // crea stream di output su Socket      OutputStreamWriter osw = new OutputStreamWriter (connessione.getOutputStream() );       BufferedWriter bw = new BufferedWriter (osw);
        sOUT = new PrintWriter(bw,true);            // crea stream di input da tastiera
            stdIn = new BufferedReader(new InputStreamReader(System.in)); 
           String Dato;            //legge da tastiera, invio al server      
           while(true) {         
            Dato = stdIn.readLine();
           sOUT.println(Dato);
          if (Dato.equals("END"))break; 
         System.out.println("echo" + sIN.readLine());
         }   //CHIUDO STREAM E SOCKET 
        System.out.println("closing...");
        sIN.close(); 
         stdIn.close(); 
         stdIn.close();
        connessione.close();
  }      
        catch(IOException e)  {  
        System.err.println("errore"); 
        System.exit(1);    } }
Codice:

import java.io.*;
import java.net.*;
public class ServerClient {
public static final int PORT = 1050; 
   /**     * @param args the command line arguments     */
public static void main(String[] args) throws IOException {  
 ServerSocket sSocket = new ServerSocket(PORT);; 
  System.out.println("start"); 
  System.out.println("SERVER SOCKET: " +sSocket );
   Socket connessione =null;
    BufferedReader sIN = null; 
  PrintWriter sOUT = null;   
       try {      // bloccante finche non avviene una connessione 
           connessione = sSocket.accept();  
    System.out.println("connessione stabilita..."+connessione);            // crea stream di input da clientSocket      InputStreamReader input = new InputStreamReader (connessione.getInputStrea() ); 
     sIN = new BufferedReader(input);    // crea stream di output da clientSocket      OutputStreamWriter osw = new OutputStreamWriter (connessione.getOutputStream() );      BufferedWriter bw = new BufferedWriter (osw);  
    sOUT = new PrintWriter(bw,true);            // ciclo di ricezione dal client e invio di risposta      // finchè il client manda la stringa "END" .... e si termina   
   while(true) { 
         String str = sIN.readLine();  
        if (str.equals("END"))break;
          sOUT.println(str);      }   }  
    catch(IOException e)    {
         System.err.println("errore");  
       System.exit(1);    }        //CHIUDO STREAM E SOCKET 
   System.out.println("closing...");
    sOUT.close();  
 sIN.close(); 
  connessione.close(); 
   sSocket.close();    }   }
Adesso il problema è che non riesco a fare la media aritmetica tra i due numeri, so che per voi può essere facile ma io sono appena agli inizi e come studio da solo non ho nessuno a cui fare domande.. vi chiedo quindi di darmi un aiuto a finire questo programma, è da tutto il giorno che ci provo.. Grazie

1 Risposte

  • Re: Programmazione server-client

    Int somma = 0


    A ogni ricezione di un dato valido
    somma += datoRicevuto


    Media = somma / numeroDatiValidiRicevuti
Devi accedere o registrarti per scrivere nel forum
1 risposte