1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Java: Ler de um Socket stream

Discussão em 'Programação' iniciada por Fr33d, 18 de Outubro de 2008. (Respostas: 2; Visualizações: 1458)

  1. Boas pessoal,

    Tenho um pequeno problema ao ler de um socket em java.
    Quero implementar algo do genero peer to peer usando TCP, na verdade preciso de ler de um socket (se houver algo para ler) e depois tenho de ver se há algo para enviar. Ou seja, ando numa rotina de escuta ->envio->escuta->envio... e por aí vai.

    Estou a usar a classe DataInputStream, porque para além de me deixar ler bytes, permite-me especificar o número de bytes a ler. O problema é que a função read (e outros afins desta função) é bloqueante, o que torna a rotina um pouco mais complicada, ou seja, não consigo continuar a tentar enviar bytes, porque a thread bloqueia-se a tentar ler do socket.

    Será que existe uma versão de um read(mesmo que noutra classe) que não se bloqueie? tou farto de pesquisar e nada se adequa. Notem que não quero coisas como readLine's, porque eu quero ler um numero especifico de bytes.


    Espero ter-me explicado bem.... Desde já obrigado pela ajuda.
     
  2. nsilvio

    nsilvio Power Member

    Esta suposto bloquear! Por principio, não podes continuar a executar o procedimento se ainda não recebeste os dados da rede... certo?

    O que tens de fazer é criar uma Thread (java.util.Thread) que execute o processo de leitura em paralelo. E sincronizar a leitura/escrita de dados para a Socket.
    Mais, se estiveres a utilizar SWING, aconselho utilizar utilizar um SwingWorker
    Da uma vista de olhos aqui... http://java.sun.com/products/jfc/tsc/articles/threads/threads1.html
     
  3. Thanks, não foi exactamente o que pedi, mas já me resolveu o caso.

    Obrigado
     

Partilhar esta Página