Input e OutputStream em Socket

3 respostas
Baldao

Pessoal, tenho tido um problema com método que envia uma mensagem para o servidor e espera a resposta.

O método:
private void requireIP() throws UnknownHostException, java.io.IOException {
        sock = new Socket(serverAddress, serverPort);
        
        //Captura o fluxo de entrada
        entrada = new BufferedReader(new InputStreamReader(sock.getInputStream()));
        
        //Captura o fluxo de saída
        saida = new DataOutputStream(sock.getOutputStream());
        
        saida.writeBytes("{request::requireIP}");

        String s;
        while ((s = entrada.readLine()) != null) {
            System.out.println(s);
        }
       
        sock.close();
    }

O problema é que o método não envia a mensagem para o servidor. Parece que de alguma forma o loop while ((s = entrada.readLine()) != null) é executado antes deixando o programa em estado de espera indefinidamente. Quando eu retiro o loop, o servidor recebe normalmente a requisição, porém o cliente não recebe nada (óbvio! :lol: ). Como eu poderia resolver esse problema?
Agradeço a atenção!

3 Respostas

ViniGodoy

Depois de saida.writeBytes("{request::requireIP}") tente colocar saida.flush().

Os dados podem estar no buffer, e não sairão até que o Stream seja fechado (o que provavelmente acontece quando você retira o while), ou que um flush seja dado.

Baldao

Opa! Funcionou, valeu! E o pior é q eu sabia disso, mas tinha esquecido, hehe :XD:

ViniGodoy

Acontece nas melhores famílias! :lol:

Criado 21 de janeiro de 2007
Ultima resposta 21 de jan. de 2007
Respostas 3
Participantes 2