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?
Conexão do Socket aumentando
8 Respostas
Já tentou fazer uma medição?
Como assim? Pode explicar melhor?
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é.
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.
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”?
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?
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.
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.