Estou desenvolvendo um aplicativo usando sockets, na qual dados de uma JTextArea são enviados para outra aplicação que lê a string ta JTextArea e supostamente deveria imprimir todo conteúdo do JTextArea do cliente no JTextArea do servidor. O programa também envia os dados digitados, ou seja, os caracteres do JTextArea do cliente em tempo real para o servidor, conforme as teclas vão sendo pressionadasm, ou seja, não existe um botão do tipo “Send”.
Acontece o seguinte; a string vai sendo recebida corretamente, em tempo real, sendo “jogada” no JTextArea do servidor. O problema é quando o usuário cliente pressiona a tecla Enter. Quando isso acontece, ao invés de no JTextArea do servidor, uma linha ser pulada, ele simplesmente apaga tudo e só escreve o é digitado posteriormente ao Enter ter sido teclado.
O trecho do servidor responsável pela leitura, onde a variável in é como se segue:
BufferedReader in = new BufferedReader(
new InputStreamReader(
clientSocket.getInputStream()));
E o trecho responsável pela leitura do stream é:
String input = in.readLine();
while (input != null)
{
if(jTextAreaFriend.getLineCount() >
jTextAreaFriend.getRows())
{
int rows = jTextAreaFriend.getRows();
jTextAreaFriend.setRows(++rows);
}
if(input.contains("<ENTER>")) {
input = input.replaceAll("<ENTER>", "\n");
}
jTextAreaFriend.setText(input);
input = in.readLine();
}
Não sei bem pq no servidor ele so passa a considerar, nas leituras subsequentes tudo que é digita após o ENTER.
Lendo o javadoc do BufferedReader, pude constatar que ele descarta os caracteres de new line, talvez isso faça com o que o ENTER não funcione.
Alguém pode me ajudar? Existe algum stream que possa ler uma string, INCLUINDO o caracter de new line? Em suma, eu quero que quando o usuário pule uma linha com a tecla Enter, o mesmo efeito seja observado na servidor. Acredito que a respota esteja no stream.
Grato.