Modello Client-Server Java

di il
7 risposte

Modello Client-Server Java

Ciao a tutti!
Sto realizzando due programmi in java che mi permettano di calcolare un prezzo quando viene applicato un determinato sconto.
Il client instaura la connessione con il server e gli invia il prezzo originale con lo sconto da applicare, il server dovrebbe restituire al client il nuovo prezzo, ma invece restituisce 0. Come faccio a sapere se il dato che il client passa al server è un intero?

7 Risposte

  • Re: Modello Client-Server Java

    prog1998 ha scritto:


    Sto realizzando due programmi in java che mi permettano di calcolare un prezzo quando viene applicato un determinato sconto.
    Il client instaura la connessione con il server e gli invia il prezzo originale con lo sconto da applicare, il server dovrebbe restituire al client il nuovo prezzo, ma invece restituisce 0. Come faccio a sapere se il dato che il client passa al server è un intero?
    Inizia con il precisare cosa sono client e server: due applicazioni Java tradizionali "standalone"? (console o GUI ?) O altro?
    E anche come avviene la comunicazione, con quale meccanismo/protocollo.
  • Re: Modello Client-Server Java

    Public void comunicazione(){
    try{
    System.out.println("Inserisci l'importo");
    numero_uno = Integer.parseInt(tastiera.readLine());
    System.out.println("Inserisci la percentuale dello sconto da applicare");
    numero_due = Integer.parseInt(tastiera.readLine());
    if(numero_uno > 0 && (numero_due >= 0 && numero_due <= 100)){
    System.out.println("Hai deciso di applicare al prezzo di: " + numero_uno + " euro uno sconto del " + numero_due + "%.");
    System.out.println("Invio i dati al server");
    outVersoServer.write(numero_uno);
    outVersoServer.write(numero_due);
    res = Integer.parseInt(inDalServer.readLine());
    System.out.println("Il prezzo scontato è: " + res);
    System.out.println("Chiudo la connessione");
    mioSocket.close();
    }else{
    System.exit(1);
    }
    }catch(Exception e){
    System.err.println(e.getMessage());
    System.err.println("-----------------------------------------------------");
    System.err.println(" ERRORE DURANTE LA COMUNICAZIONE CON IL SERVER");
    System.err.println("-----------------------------------------------------");
    System.exit(1);
    }
    }
    questa è la classe che invia al server i dati, secondo me c'è qualche problema con il tipo dei dati che io passo al server
  • Re: Modello Client-Server Java

    Public void comunicazione(){
    try{
    numeroUno = inDalClient.read();
    numeroDue = inDalClient.read();
    System.out.println("Ricevuti i dati dal client");
    risultato = numeroUno - ((numeroUno / 100) * numeroDue);
    outVersoClient.writeInt(risultato);
    socketClient.close();
    }catch(Exception e){

    }
    }
    Questa è la classe che riceve i dati
  • Re: Modello Client-Server Java

    Cosa sono outVersoServer/inDalClient/outVersoClient ?
  • Re: Modello Client-Server Java

    BufferedReader inDalClient;
    DataOutputStream outVersoClient;
  • Re: Modello Client-Server Java

    prog1998 ha scritto:


    BufferedReader inDalClient;
    DataOutputStream outVersoClient;
    No, non ha (comunque) senso. Da una parte fai inDalServer.readLine() e ti aspetti una "riga" (terminata dal newline) mentre dall'altra parte fai writeInt(risultato) che NON invia certamente una riga.

    Devi fare le cose in modo che i dati corrispondano come forma/tipo.
  • Re: Modello Client-Server Java

    Visto che devi principalmente trasferire valori primitivi (int), ti suggerisco di usare DataInputStream/DataOutputStream in entrambe le parti client E server.

    Il client fa 2 dos.writeInt(n), poi un dos.flush() poi un dis.readInt()
    Il server fa 2 dis.readInt(), poi un dos.writeInt(n) poi un dos.flush()

    Questo è molto più "simmetrico" rispetto a quanto stavi facendo.
Devi accedere o registrarti per scrivere nel forum
7 risposte