Visualizzazione dei risultati da 1 a 5 su 5

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2016
    residenza
    Italy
    Messaggi
    139
    Buon pomeriggio Andbin,

    posto il codice del mio client:

    codice:
    package client1;
    import java.io.*;
    import java.net.*;
    import java.util.Scanner;
    import java.util.NoSuchElementException;
    
    
    
    public class Client1 
    {
        public Client1(String IP, int port)
        {
            this.IP=IP;
            this.port=port;
        }
        
        public void startClient() throws IOException
        {
            Socket sock=new Socket(IP,port);
            System.out.println("Connessione stabilita");
            
            Scanner sockIN=new Scanner(sock.getInputStream());
            PrintWriter sockOUT=new PrintWriter(sock.getOutputStream());
            Scanner stdin=new Scanner(System.in);
            
            String a=sockIN.nextLine();
            System.out.println(a);
            try{
                while(true)
                {
                    String input=stdin.nextLine();
                    sockOUT.println(input);
                    sockOUT.flush();
                    String sockline=sockIN.next();
                    System.out.println(sockline);
                }
            }catch(NoSuchElementException e)
            {
                System.out.println("Connessione chiusa");
            }finally
            {
                stdin.close();
                sockIN.close();
                sockOUT.close();
                sock.close();
            }
        }
        
        private String IP;
        private int port;
    }
    il programma lo faccio girare in locale, questo è il motivo per cui non ho usato il charset, se ritieni sia opportuno farò questa modifica, fin ora ho pensato fosse il server il problema proprio dal fatto che il primo output veniva effettuato correttamente ed i restanti no.
    P.s non pensavo ci fossero problemi con l'uso dei vari nextQualcosa(), cosa potrebbe portarmi problemi??

    Grazie per l'aiuto ;-)
    Ultima modifica di LeleFT; 07-12-2016 a 18:58 Motivo: Corretto tag chiusura CODE

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da EziT90 Visualizza il messaggio
    codice:
            Scanner sockIN=new Scanner(sock.getInputStream());
            
            String a=sockIN.nextLine();
    
            try{
                while(true)
                {
                    // ....
    
                    String sockline=sockIN.next();
                }
     .......
    Dalle sole parti che ho evidenziato, a parte un primo nextLine(), nel resto del while fai un next(). Questo estrae 1 token. I token in Scanner per default sono separati da whitespace. Se il server manda "Immetti q" questi .... sono DUE token.
    Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2016
    residenza
    Italy
    Messaggi
    139
    Ciao Andbin,

    grazie per la risposta, non sapevo che la classe Scanner vedesse lo spazio come due token, questo mi ha portato ad usare il next() anzichè nextLine() .

    Adesso però ho ancora due problemi, sul mio server.
    A differenza di quanto postato nel primo messaggio, ho effettuato questa modifica al server:

    [CODE]
    //PASSO 4:FACCIO LA LETTURA E SCRITTURA NELLA CONNESSIONE
    while(true)
    {
    out.println("Vuoi continuare? (Y/N)");
    out.flush();
    String line=in.nextLine();
    if(line.equals("N"))
    {
    break;
    }else if(line.equals("Y")){
    out.println("Immetti q");
    out.flush();
    String q=in.nextLine();
    int qq=Integer.parseInt(q);
    out.println("q="+q);
    out.flush();
    out.println("Immetti p");
    out.flush();
    String p=in.nextLine();
    int pp=Integer.parseInt(p);
    out.println("p="+p);
    out.flush();
    int n=pp*qq;
    out.println("n="+n);
    out.flush();
    }
    }
    [\CODE]

    I miei problemi ora sono dati dal fatto che, dopo aver richiesto e stampato q, per avere stampata la richiesta di p, devo dare un invio, poi dopo aver dato in input p, non mi da in risposta p='il mio numero in input' , e non ho in output neanche il numero n ottenuto come p*q , ma chiude direttamente la connessione.
    Cosa potrebbe essere, non ne ho idea mi sto .

    Grazie ancora per la pazienza nell'aiutarmi.
    Ultima modifica di EziT90; 08-12-2016 a 18:53

Tag per questa discussione

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 © 2026 vBulletin Solutions, Inc. All rights reserved.