Pergunta rápida [ sockets ]

10 respostas
_fs

Oi, boa tarde.

Seguinte: tenho um applet que se conecta ao servidor e espera este mandar uma mensagem. A parte do código que recebe a mensagem ( message = ( String ) input.readObject(); ) reside dentro de um bloco try que está dentro da minha classe Connect()

O que eu preciso saber é: como receber uma mensagem do servidor sempre que este mande uma, sem ter que desconectar e reconectar?

Já percebi que não posso fazer referência ao Input sem estar dentro da classe Connect() ou sem declarar o socket, a conexão e o input e os catchs novamente.

10 Respostas

cv1

Use uma thread que fica lendo o Stream em um loop, e sempre que chegar uma mensagem, notifique os interessados :slight_smile:

Alias, pq vc esta usando ObjectOutputStream/ObjectInputStream se tudo o que vc está fazendo é trafegar Strings? :smiley:

_fs

Oi cv!

Então o gravérrimo problema é: após receber a string, o applet tem que ficar livre para outro botão ser pressionado e processar aquela informação num banco de dados em asp ( isso ok ).

Usano o Loop, ele nunca sai do Método Connect() ( pois estará sempre esperando uma mensagem ), tornando impossível clicar em outro botão que chama outro método.

Estou sem idéias :cry:

ps.: estou usando Input e Output porque ainda não aprendi outro jeito hehe

_fs

Uma solução que eu pensei seria a criação de um método getMessage().
Ele seria chamado no final do método processaForm(), fazendo com que, depois das informações devidamente processadas, o applet ficaria esperando novamente uma mensagem do servidor.

MAS como já disse não consigo brincar com o input sem declarar aquele caminhão de coisas.

cv1

Foi exatamente por esse problema (de ficar travado esperando dados do servidor) que eu dei a sugestão de usar uma thread! :smiley:

_fs

Ah! Então preciso:

  1. Descobrir o que são threads
  2. Descobrir como aplicar threads

Quando surgir alguma duvida sobre isso eu posta aqui, ok?

VALEU! =**

marciolx

“LIPE”:
Ah! Então preciso:

  1. Descobrir o que são threads
  2. Descobrir como aplicar threads

Quando surgir alguma duvida sobre isso eu posta aqui, ok?

VALEU! =**

http://www.guj.com.br/forum/viewtopic.php?t=5062

_fs

Nossa :shocked!: muitérrimo obrigado :rainbowafro:

_fs

Ta, descobri o que são Threads …

Mas não estou tendo idéia de como aplica-los no que eu preciso.

O que eu entendi:

  1. Preciso colocar os dois métodos ( Connection() que pega os dados e processaForm() que usa os dados ) em Threads.
  2. Sendo assim, poderei executá-los independentemente.

Mas, e aí? Perguntas:

  1. Qual a diferença de chamada de um método comum e um que reside num Thread?
  2. Considerando que eu criei um Applet, qual a melhor forma de usar Threads ( já que não posso extender mais a classe )
  3. Existe alguma diferença em aplicação e applets que usam threads?
cv1

Lipe, uma coisa que vc tem que se lembrar, sempre que achar que threads são de outro mundo: você já tá usando threads em qualquer programa em Java - o método main() é uma thread, o garbage collector é outra, e por aí vai… :wink:

_fs

Alguém sabe onde há exemplos de uso de Threads em applets que usam sockets?

Procurei bastante, mas não acho os tres juntos :cry:

Criado 5 de setembro de 2003
Ultima resposta 10 de set. de 2003
Respostas 10
Participantes 3