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