Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: [java] client/server

  1. #1
    Utente di HTML.it L'avatar di nicola
    Registrato dal
    May 2007
    Messaggi
    86

    [java] client/server

    da poco mi sono avvicinato alle applicazioni client/server
    sto usando quindi il BufferedReader ed il BufferedWriter...
    ho un problema...
    per inviare una stringa uso con il client:
    codice:
    OutputStream os = client.getOutputStream();
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
    bw.write("ciao\n");
    bw.flush();
    con il server per riceverla uso:
    codice:
    nputStream is = s1.getInputStream();
    BufferedReader br = new BufferedReader(new InputStreamReader(is));
    // Legge l'input e lo visualizza sullo schermo
    System.out.println("Domanda del client: " + br.readLine());
    ora...
    come faccio a fare un controllo su br...
    cioè devo in base alla tringa ricevuta fare delle cose... e quindi ho fatto
    codice:
    System.out.println("Domanda del client: " + br.readLine());
    //fase di controllo
    String controllo = br.toString();
    System.out.println("stampo la frase per il controllo(55 Sv): "+controllo);
    if (controllo=="ciao")
      System.out.println("è stata richiesta la fase 1");
    else
    	System.out.println("errore fase di controllo");
    naturalmente sbaglio perchè non riesco ad ottenere una stringa con cui fare il controllo...
    quando la stampo "controllo" infatti non esce la stringa...
    come faccio?...
    e poi come invio dei numeri?, in questo modo il controllo mi risulta su interi e non su stringhe e quindi più facile da gestire

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [java] client/server

    Originariamente inviato da nicola
    if (controllo=="ciao")
    Queste sono le basi ma davvero proprio le basi!
    Le stringhe non si confrontano con ==, si usa equals() o compareTo() (a seconda di cosa serve).
    L'operatore == compara solo ed esclusivamente il valore dei reference, non il contenuto degli oggetti.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di nicola
    Registrato dal
    May 2007
    Messaggi
    86
    credimi lo sapevo ti giuro

    che stupido...
    mq cmq mi dici anche come passare dei numeri invece di stringhe?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da nicola
    mq cmq mi dici anche come passare dei numeri invece di stringhe?
    I Reader/Writer sono orientati ai caratteri, quindi al massimo puoi passare una stringa che contiene il numero es. "123".
    Ma dovresti spiegare bene cosa vuoi fare, cioè quale è il "protocollo" che vuoi implementare. Con le classi che hai usato, il client e il server più che scambiarsi linee di testo non è che possono fare molto altro....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it L'avatar di nicola
    Registrato dal
    May 2007
    Messaggi
    86
    ho messo equals ma cmq il controllo nn finziona
    codice:
    System.out.println("Il client fa una richiesta al server ");
    //manda una richiesta al server
    OutputStream os = client.getOutputStream();
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
    bw.write("ciao");
    bw.flush();
    codice:
    InputStream is = s1.getInputStream();
    BufferedReader br = new BufferedReader(new InputStreamReader(is));
    // Legge l'input e lo visualizza sullo schermo
    System.out.println("Domanda del client: " + br.readLine());
    //fase di controllo
    String controllo = br.toString();
    System.out.println("stampo la frase per il controllo(55 Sv): "+controllo);
    if (controllo.equals("ciao"))
      System.out.println("è stata richiesta la fase 1");
    else
    	System.out.println("errore fase di controllo");
    mi stampa sempre:
    errore fase di controllo
    e poi quando stampo controllo
    con la riga
    codice:
    System.out.println("stampo la frase per il controllo(55 Sv): "+controllo);
    mi esce
    java.io.BufferedReader@1690726
    puoi aiutarmi...
    grazie

  6. #6
    Utente di HTML.it L'avatar di nicola
    Registrato dal
    May 2007
    Messaggi
    86
    allora vorrei fare questo..
    il client richiede dei servizi al server...
    quindi il server legge il servizio richiesto ed in base a quale sia lo svolge e da la risposta al client
    volevo usare una cosa tipo "case 1"ecc.. "case 2" eccc
    ecco perchè facevo dei controlli...
    se inviassi dei numeri potrei fare uno switch (espressione) case 1:....
    case 2:....
    altrimenti puoi suggerirmi tu come fare?
    grazie

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da nicola
    codice:
    System.out.println("stampo la frase per il controllo(55 Sv): "+controllo);
    mi esce
    java.io.BufferedReader@1690726
    Mi sembra ovvio. br è un oggetto, il toString() fornisce informazioni sull'oggetto e questo non centra nulla con le stringhe ricevute!
    BufferedReader non implementa toString, in quanto ciò che stampa è dovuto a toString() in Object.

    Originariamente inviato da nicola
    allora vorrei fare questo..
    il client richiede dei servizi al server...
    quindi il server legge il servizio richiesto ed in base a quale sia lo svolge e da la risposta al client
    volevo usare una cosa tipo "case 1"ecc.. "case 2" eccc
    ecco perchè facevo dei controlli...
    se inviassi dei numeri potrei fare uno switch (espressione) case 1:....
    case 2:....
    Uno switch no, in quanto l'argomento dello switch non può essere un oggetto (ad eccezione delle enum). Puoi fare una catena di if testando con equals.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    Utente di HTML.it L'avatar di nicola
    Registrato dal
    May 2007
    Messaggi
    86
    capito...
    ed allora come faccio a fare il controllo?
    nel codiche di sopra ho sostituito con equals ma continua cmq a stampare controllo errato...

    allora
    io ricevo "br"
    la stampo come br.readLine...
    è corretto associare br ad una stringa come ho fatto con la riga
    String controllo = br.toString();
    in questo caso controllo, contiene la stringa che ho inviato o no...

    il problema è che i controlli non funzionano... sto sbagliando qualcosa e nn capisco cosa

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da nicola
    allora
    io ricevo "br"
    la stampo come br.readLine...
    è corretto associare br ad una stringa come ho fatto con la riga
    String controllo = br.toString();
    in questo caso controllo, contiene la stringa che ho inviato o no...
    No, br è un BufferedReader. Il toString() sul BufferedReader non serve. La stringa ricevuta è ottenuta da readLine() invocato sul BufferedReader.

    String controllo = br.readLine ();
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  10. #10
    Utente di HTML.it L'avatar di nicola
    Registrato dal
    May 2007
    Messaggi
    86
    grazie
    e sarebbe quindi corretto fare
    int controllo = br.readLine();
    e quindi usare uno swich su controllo?...
    potrei fare così?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.