Salve, ho un problemino nell' invio di stringhe dal server al client
server :
Client :codice:public void run() { if (socket.isConnected()) { System.out.print("\n *** Connessione del Client : " + format(socket) + " ***"); } try { BufferedReader fromClient = new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter toClient = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()), true); //autoflush while (true) { //Ascolto i messaggi del client String userInput = fromClient.readLine(); if (!userInput.equals(null)) { //stampo i messaggi del client System.out.print("\nIl Client " + format(socket)+ " ha scritto : " + userInput); //interpreto i messaggi del client int valore = elaboraInput(userInput); switch (valore) { case 0: toClient.println("Comando inserito non valido! Digitare help per la lista dei comandi"); break; case 2: toClient.println("Comando ancora non disponibile"); break; case 11: toClient.println("Comando 1\n"+ "comando 2\n"+ "comando 3"); break; case 12: toClient.println("Disconnessione dal Server..."); break; } } if (userInput.equalsIgnoreCase("quit")){ toClient.close(); fromClient.close(); System.out.print("\n *** Disconnessione del Client : " + format(socket) + " ***"); socket.close(); break; } } } catch (IOException e) { System.out.print("\nErrore nella connessione con il Client " + format(socket) + " : " + e.getMessage()); } }
Quando il client digita help per la lista dei comandi, il server invia una stringa con l'elenco dei comandi. Per ogni comando c'è /n che torna a capo, quindi è come se fossero 3 Stringhe. Il problema è che il client tramite il BufferedReader con il metodo readLine() mi stampa una stringa alla volta!codice:private void connetti(String ip, int porta) { try { Socket clientSocket = new Socket(ip, porta); // clientSocket.setSoTimeout(5000); System.out.println("In connessione con il Server...\n"); // Thread.sleep(10000); PrintWriter toServer = new PrintWriter(new OutputStreamWriter( clientSocket.getOutputStream()), true); // autoflush BufferedReader fromServer = new BufferedReader( new InputStreamReader(clientSocket.getInputStream())); BufferedReader console = new BufferedReader(new InputStreamReader( System.in)); System.out.println("Connessione stabilita con il Server " + format(clientSocket) + "\n"); while (true) { System.out.print("Client > "); String userInput = console.readLine(); // se viene premuto invio non fare nulla if (!userInput.equalsIgnoreCase("")) { // mando al server toServer.println(userInput); // se scrivo quit, mando al server il messaggio di uscita ed // esco dal ciclo if (userInput.equalsIgnoreCase("quit")) { toServer.println(userInput); break; } // leggo la stringa del server e la stampo String linea = fromServer.readLine(); System.out.println(linea); } } console.close(); fromServer.close(); toServer.close(); clientSocket.close(); System.out.println("Connessione terminata con il Server " + format(clientSocket)); } catch (UnknownHostException e) { System.out.println("Impossibile connettersi al Server " + ip + ":" + porta + " Host sconosciuto!"); } catch (IOException e) { System.out.println("Errore nella connessione con il Server " + ip + ":" + porta); } }![]()
Come faccio a far stampare tutta la lista dei comandi in un colpo solo?![]()
help me!![]()
Grazie![]()

Rispondi quotando