Pregunta

Estoy creando una aplicación de servidor cliente de chat multiproceso.En la conexión del servidor utilizo el método PrintWriter println(String s) para escribir la respuesta al cliente.

PrintWriter out;
String msg = in.readLine();
String response = "";
if (msg.startsWith("nick: ") {
    response = protocol.authenticate(msg); //returns a String that says "welcome " + nick
    //if there are messages pending for the author who logged in add them to the response String
         response+="\r\n"+textmsg;
} else { ... }
out.println(response);

Cuando ejecuto el cliente, que usa el método BufferedReader readLine() para leer desde el servidor, recibo el mensaje de bienvenida pero no el mensaje pendiente para el cliente, pero si uso

response+=textmsg;

funciona, así que supongo que es porque estoy usando pero aún necesito imprimir una nueva línea entre esos dos mensajes.¿Qué tengo que hacer?

Editar después de aceptar la respuesta:Al final elegí usar OutputStream y InputStream para poder enviar todo tipo de cadena que quiera, incluso con .

¿Fue útil?

Solución

Cualquier llamada println una vez para cada línea de salida (es decir, dos veces) o use solo \n, sin el \r.Ese es el carácter de nueva línea estándar de Java y \r\n es una secuencia de fin de línea específica de Windows.Por supuesto, al final del cliente ahora tienes que llamar readLine dos veces también.No hay manera de llamar readLine una vez y obtener dos líneas.Si necesita un delimitador personalizado, entonces debe usar algo más, no \n.

Otros consejos

Utilice la impresión con PrintWriter, para el \ n.

Use println o use %n con printf

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top