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