Ciao a tutti,
sto realizzando un'applicazione client/server in cui il server manda dei messaggi al client, il quale deve rispondere immettendo dei dati in input.
Il problema sorge quando devo stampare i messaggi con il server, questo è il codice del mio server:
codice:
package server1;
import java.io.*;
import java.net.*;
import java.util.Scanner;
public class Server1
{
public Server1(int port)
{
this.port=port;
}
public void startServer() throws IOException
{
//PASSO 1:APRO PORTA TCP
servSock=new ServerSocket(port);
System.out.println("Server pronto sulla porta: "+port);
//PASSO 2:ATTESA DELLA CONNESSIONE
Socket sock=servSock.accept();
System.out.println("Connessione con il client stabilita");
//PASSO 3:APRO STREAM PER FARE I/O
Scanner in=new Scanner(sock.getInputStream());
PrintWriter out=new PrintWriter(sock.getOutputStream());
//PASSO 4:FACCIO LA LETTURA E SCRITTURA NELLA CONNESSIONE
out.println("Vuoi continuare? (Y/N)");
out.flush();
String line=in.nextLine();
if(line.equals("Y"))
{
while(true)
{
if(line.equals("N"))
{
break;
}else if(line.equals("Y")){
out.println("Immetti q");
out.flush();
String q=in.next();
out.println("q="+q);
out.flush();
}
out.println("Vuoi continuare? (Y/N)");
out.flush();
line=in.nextLine();
}
}
//PASSO 5:CHIUDO STREAM E SOCKET
System.out.println("Chiusura della connessione");
in.close();
out.close();
sock.close();
servSock.close();
System.out.println("Connessione chiusa");
}
private int port;
private ServerSocket servSock;
}
Adesso quando faccio out.println("Vuoi continuare? (Y/N)"); mi stampa il messaggio su una riga sola, in modo corretto.
Entrato nell'if, quindi nel ciclo while, le restanti out.println(); , mi vengono spezzate su più righe, ovvero esso stampa: Immetti, poi premendo invio mi stampa una riga vuota, poi premendo nuovamente invio mi stampa q, invece dovrebbe stampare come dato dalla out, direttamente "Immetti q" su un'unica riga.
Non riesco a capire dove possa essere l'errore.
Grazie a tutti per l'aiuto!