Salve, ho un problemino nell' invio di stringhe dal server al client
server :
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());
}
}
Client :
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);
}
}
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!
Come faccio a far stampare tutta la lista dei comandi in un colpo solo?
help me!
Grazie