Sim e exatamente isso que voce falou e funciona tb para o readObject, pois 
essa função eh do Socket.

O ping tem que ser feito na mão mesmo, através do seu próprio protocolo. 
Então quando a exceção é levantada eu envio alguma coisa pro cliente e fico 
esperando a resposta... Se não recebo em tantos segundos assumo que o cara 
morreu e fecho o socket. Se não morreu volto pro in.readLine().

Infelizmente não há nenhuma função do socket do tipo 
socket.estouVivoeValido(). Se tivesse iria facilitar bastante as coisas.

[]'s

Sergio
Sun Certified Java Programmer
Consultor Java

>From: Sergio - InfoSaúde RS <[EMAIL PROTECTED]>
>To: "'Sergio Oliveira Jr.'" <[EMAIL PROTECTED]>
>Subject: RES: RES: [java-list] in.readLine() não retorna !!!
>Date: Mon, 11 Jun 2001 11:09:40 -0300
>
>Mas o que exatamente o método setSoTimeout faz ???
>Ele fica contado o tempo que passamos por parâmetro pra ele e se o
>in.readLine() não receber nada através do Stream e o tempo especificado
>acabar ele levanta uma exceção ???
>Como que tu executa um ping do Client no server ???  Tem algum método
>específico do socket que faz isso ???
>Se funciona pro readLine deve funcionar também pro readObject, certo ??
>
>-----Mensagem original-----
>De: Sergio Oliveira Jr. [mailto:[EMAIL PROTECTED]]
>Enviada em: segunda-feira, 11 de junho de 2001 09:34
>Para: [EMAIL PROTECTED]
>Cc: [EMAIL PROTECTED]
>Assunto: Re: RES: [java-list] in.readLine() não retorna !!!
>
>
>
>Funcionou sim, mas tive que fazer com que o cliente dê um ping de tempos em
>tempos no servidor, para evitar um timeout do in.readLine() causado por
>longos períodos de inatividade do cliente.
>
>Uma coisa é o cliente sumir, outra é ele ficar muito tempo inativo.
>
>Então ficou assim:
>
>timeout de 10 minutos para o in.readLine();
>ping de 4 em 4 minutos do cliente para colocar o in.readLine() para
>funcionar.
>
>[]'s
>
>Sergio
>Sun Cerfied Java Programmer
>Consultor Independente Jav
>
>
>
> >From: Sergio - InfoSaúde RS <[EMAIL PROTECTED]>
> >To: "'[EMAIL PROTECTED]'" <[EMAIL PROTECTED]>
> >Subject: RES: [java-list] in.readLine() não retorna !!!
> >Date: Mon, 11 Jun 2001 09:21:30 -0300
> >
> >E aí cara ????  Funcionou ???  Te pergunto isso pq estou desenvolvendo 
>uma
> >aplicação que vai passar por este mesmo problema ....
> >
> >-----Mensagem original-----
> >De: Sergio Oliveira Jr. [mailto:[EMAIL PROTECTED]]
> >Enviada em: sábado, 9 de junho de 2001 13:22
> >Para: [EMAIL PROTECTED]
> >Assunto: Re: [java-list] in.readLine() não retorna !!!
> >
> >
> >
> >Acho que a resposta estava na minha frente e eu não vi:
> >
> >socket.setSoTimeout().
> >
> >Vou testar e ver se funciona!
> >
> >[]'s
> >
> >Sergio
> >
> > >From: "Sergio Oliveira Jr." <[EMAIL PROTECTED]>
> > >Reply-To: [EMAIL PROTECTED]
> > >To: [EMAIL PROTECTED]
> > >Subject: [java-list] in.readLine() não retorna !!!
> > >Date: Sat, 09 Jun 2001 14:10:36 -0000
> > >
> > >Tenho um servidor Java que escuta numa porta via um ServerSocket e abre
> >um
> > >Thread para cada requisição que ele recebe. Esse Thread recebe o socket 
>e
> > >abre um BufferedReader (in) e um PrintStream (out) para se comunicar 
>com
> >o
> > >cliente.
> > >
> > >O problema é o seguinte:
> > >
> > >Alguns in.readLine() fica bloqueados para sempre, ou seja, nunca
> >retornam.
> > >
> > >Já andei investigando e descobri que temos que usar
> > >socket.setKeepAlive(true), para o TCPIP checar periodicamente se o 
>socket
> > >está vivo ou se o cliente desapareceu silenciosamente. (Como 
>experiência,
> > >conecte duas máquinas via um socket e desligue o cabo de rede de uma
> >delas.
> > >A outra vai ficar travada num in.readLine() eternamente se você não
> >estiver
> > >usando o KeepAlive!)
> > >
> > >Tb temos que setar o parametro KeepAliveTime no registry do windows, 
>que
> >o
> > >intervalo em milisegundos que o Windows vai dar um ping no Socket para
> > >saber
> > >se ele ainda está vivo. Se esse parametro não estiver presente no
> >Registry,
> > >ele assume como default 2 horas!
> > >
> > >O problema é que mesmo fazendo esse esquema do KeepAliveTime, estou
> > >desconfiado que alguns threads continuam travados para sempre no
> > >in.readLine(), o que está fazendo com que o meu servidor trave uma vez 
>a
> > >cada duas semanas por excesso de threads!
> > >
> > >Alguém já passou por problema semelhante? Tem como forçar um retorno de
> >um
> > >in.readLine() travado ? Se tiver acho então que a solução poderia ser 
>um
> > >thread monitor para matar os threads que estão travados a muito tempo.
> > >
> > >[]'s
> > >
> > >Sergio Oliveira Jr.
> > >Sun Cerfied Java Programmer
> > >Consultor Java
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > 
> >_________________________________________________________________________
> > >Get Your Private, Free E-mail from MSN Hotmail at 
>http://www.hotmail.com.
> > >
> > >
> > >------------------------------ LISTA SOUJAVA 
>----------------------------
> > >http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
> > >dúvidas mais comuns: http://www.soujava.org.br/faq.htm
> > >regras da lista: http://www.soujava.org.br/regras.htm
> > >para sair da lista: envie email para 
>[EMAIL PROTECTED]
> > 
> >-------------------------------------------------------------------------
> > >
> >
> >_________________________________________________________________________
> >Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.
> >
> >
> >------------------------------ LISTA SOUJAVA ----------------------------
> >http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
> >dúvidas mais comuns: http://www.soujava.org.br/faq.htm
> >regras da lista: http://www.soujava.org.br/regras.htm
> >para sair da lista: envie email para [EMAIL PROTECTED]
> >-------------------------------------------------------------------------
>
>_________________________________________________________________________
>Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.

_________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.


------------------------------ LISTA SOUJAVA ---------------------------- 
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED] 
-------------------------------------------------------------------------

Reply via email to