Conexão do Socket aumentando

8 respostas
Jedi_FeniX

Eu faço várias conexões, multi-thread, via socket com um outro servidor.
Sendo que conforme eu vou fazendo outras o tempo da conexão e da resposta do servidor vão aumentando.
O erro pode estar no meu aplicativo ou pode ser a demora do outro servidor mesmo?

8 Respostas

furutani

Já tentou fazer uma medição?

Jedi_FeniX

Como assim? Pode explicar melhor?

KWill

Jedi_FeniX:
Eu faço várias conexões, multi-thread, via socket com um outro servidor.
Sendo que conforme eu vou fazendo outras o tempo da conexão e da resposta do servidor vão aumentando.
O erro pode estar no meu aplicativo ou pode ser a demora do outro servidor mesmo?

Me parece ser normal isso. Pelo que sei, conforme vai aumentando o tráfego na rede, pior os serviços dela vão ficando. Colocar dispositivos de rede melhores e mais parrudos talvez alivie um pouco as coisas.

Inté.

celso.martins

Jedi_FeniX:
Eu faço várias conexões, multi-thread, via socket com um outro servidor.
Sendo que conforme eu vou fazendo outras o tempo da conexão e da resposta do servidor vão aumentando.
O erro pode estar no meu aplicativo ou pode ser a demora do outro servidor mesmo?

Cara, pelo que entendi, você faz conexões simultâneas e, aparentemente, “permanentes”.

Eu trabalho com conexões simultâneas e “permanentes” quando estou fazendo alguma coisa com GPSs.

As aspas no permanente é devido ao fato de ela ser permanente somente enquanto o aparelho está conectado ao servidor e trocando mensagens de keep alive.

Se for isso o que você está falando, é claro que vai consumir recursos do servidor.

Jedi_FeniX

Na verdade eu abro a conexão, envio os dados e depois fecho a conexão.
E “setei” o timeout para 30s.
Essa é a maneira certa? Como seriam as conexões “permanentes”?

celso.martins

Jedi_FeniX:
Na verdade eu abro a conexão, envio os dados e depois fecho a conexão.
E “setei” o timeout para 30s.
Essa é a maneira certa? Como seriam as conexões “permanentes”?

Eu chamo de conexões permanentes as que você mantém abertas, normalmente por mensagens de keep alive.

A aplicação que está no servidor é de seu domínio?

Jedi_FeniX

Sim é minha a aplicação.

Em relação as conexões permanentes eu tentei fazer algo parecido e não consegui, tipo abrir a conexão e ficar mandando vários dados por get, mas não funcionou.

celso.martins

Sim é minha a aplicação.

Em relação as conexões permanentes eu tentei fazer algo parecido e não consegui, tipo abrir a conexão e ficar mandando vários dados por get, mas não funcionou.

Como assim vários dados por get?

se você fizer algo do tipo:

String teste = "";
while ((teste = reader.readLine()) != null){
  bla bla bla
}

Sua conexão fica permanente até o seu client derrubar o InputStream. Isso era um problema para mim. Tem, inclusive, alguns posts meus sobre assunto aqui no GUJ. Mas depois virou uma solução.

Se você enviar um caracter de controle, o próprio server pode derrubar o InputStream e a conexão. Acho que isso é o ideal. Ou o client “derruba” a conexão inteira, derrubando o InputStream e saindo do while ou o servidor detecta esse caracter de controle e derruba tudo.

Minhas experiências com time out não foram muito boas. Provavelmente por algo que fiz errado. Mas a solução acima funcionou muito bem para mim.

Abraços.

Criado 22 de janeiro de 2009
Ultima resposta 24 de jan. de 2009
Respostas 8
Participantes 4