out.println("PING");

socket.setSoTimeout(10000);

String resp = in.readLine();



>From: Sergio - InfoSaúde RS <[EMAIL PROTECTED]>
>To: "'Sergio Oliveira Jr.'" <[EMAIL PROTECTED]>
>Subject: RES: RES: RES: [java-list] in.readLine() não retorna !!!
>Date: Mon, 11 Jun 2001 13:49:29 -0300
>
>Legal, mas não entendí como faço o ping...  Eu tenho que fazer uma chamada
>ao sistema operacional ?? Se sim, como faço isso em java ??
>
>Se o meu in.readObject() está dentro do de um while em uma Thread eu 
>poderia
>dizer que o setSoTimeout funcionaria como o serverSocket.accept() ?? Ou
>seja, ele dá um wait na thread até que algo seja enviado pelo stream e se
>nada for enviado no tempo determinado ele levanta a exceção ??
>
>-----Mensagem original-----
>De: Sergio Oliveira Jr. [mailto:[EMAIL PROTECTED]]
>Enviada em: segunda-feira, 11 de junho de 2001 12:53
>Para: [EMAIL PROTECTED]
>Assunto: Re: RES: RES: [java-list] in.readLine() não retorna !!!
>
>
>
>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.

_________________________________________________________________________
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] 
-------------------------------------------------------------------------

Responder a