Flush para BufferedReader

1 resposta
R

Pessoal,

Estou tentando ler de um socket sobre uma conexão FTP de controle. A cada comando FTP enviado são retornadas uma ou mais linhas pelas quais eu sei se a comunicação caminha bem ou não. O problema é que o método readln() tem mostrado comportamento errático, às vezes embaralhando as mensagens de retorno aos diversos comandos enviados, apesar da tentativa de tratar uma resposta de cada vez.

Depois disso tudo o que lembrei é que em C/C++ tem o tal do flush, que descarrega o canal, garantindo que o próximo stream a ser lido será novo. Há algo do tipo em Java ?

Veja só o trecho de código

cmdOut = new PrintWriter(cmdSocket.getOutputStream(), true);
cmdIn = new BufferedReader( new InputStreamReader (cmdSocket.getInputStream()));

....

cmdOut.println("USER anonymous
");
String line = null;
while ((line = cmdIn.readLine()) != null) {
	System.out.println(line);
	if (! cmdIn.ready()) break;
}

O segundo trecho se repete inumeras vezes, de acordo com a “conversa” que quero estabelecer.

Alguém sabe como garantir que a saída do socket, mantida a requisição, seja sempre a mesma ?

Tks

1 Resposta

Paulo_Silveira

o BufferedReader, no caso de um Socket, nao ajuda praticamente em nada! Tenta tirar o BufferedReader e usa um java.io.LineNumberReader

Se você quer usar mesmo o Buffered, coloca a senteça do while assim:

while (cmdIn.ready()) {

Com isso, ele só le na hora que perceber que houve um final de linha ou caracteres suficientes.

Testa e fala pra gente.

Mandou muito bem ja colocando o código entre as tags.

Criado 26 de setembro de 2002
Ultima resposta 26 de set. de 2002
Respostas 1
Participantes 2