Digamos que tenha duas threads rodando na minha aplicação,
uma abre um socket para um determinado host, começa a comunicação,
e ao mesmo tempo a outra thread abre outro socket para se comunicar com o mesmo host!
O que deveria acontecer?
A segunda thread ao tentar criar o socket não deveria disparar uma exception?
Pois aqui ela esta gerando o socket e a primeira esta no meio da tarefa perdendo a comunicação.
Isso é totalmente normal, duas threads (ou duas aplicações, duas máquinas, etc) conectarem-se na mesma porta de um servidor. É assim que funcionam os serviços em geral, capazes de atender a múltiplos clientes simultaneamente.
O que deve estar acontecendo é que a aplicação server não está preparada para esta situação, começa a falar com uma como se fosse a outra e vira bagunça. O server deve tratar o caso de uma das seguintes formas, dependendo dos requisitos do projeto:
Controlar corretamente a comunicação com mais de um client
ou
Proibir a conexão quando alguém já estiver conectado.
homisinho
Pessoal, meu servidor so aceita uma conexao por vez!!!
Caso tenha outra maquina rodando a aplicação tudo ocorre certo, a maquina 1 conecta no servidor e a maquina 2 ao criar o socket n recebe resposta e gera uma exception!
Mas tenho esse problema na mesma maquina, na mesma aplicação, terei várias threads tentando comunicar com o servidor!!!
dinunes
Elas usam a mesma porta?
E
entanglement
homisinho:
Pessoal, meu servidor so aceita uma conexao por vez!!!
Caso tenha outra maquina rodando a aplicação tudo ocorre certo, a maquina 1 conecta no servidor e a maquina 2 ao criar o socket n recebe resposta e gera uma exception!
Mas tenho esse problema na mesma maquina, na mesma aplicação, terei várias threads tentando comunicar com o servidor!!!
É que o backlog é uma fila que permite que vários clientes fiquem “esperando” em uma fila até o servidor conseguir dar outro “accept”. Se o servidor estiver ocupado, em vez de simplesmente recusar a conexão, o cliente espera em uma fila (“backlog”) até ser atendido.
homisinho
Desculpa pela demora na resposta.
Mas na realidade eu tenho várias thread na mesma aplicação comunicando com o mesmo server, ai tinha um problema de concorrência.
O mesmo já foi corrigido e esta funcionando.