Sockets - TimeOutException

5 respostas
HeitorFM

Olá,

Estou comproblemas em uma aplicação com sockets.
tenho uma classe cliente e uma servidor, quando as duas estão na mesma máquina tudo funciona.
Quando coloco o server na maquina A e o cliente na máquina B o cliente termina SocketTimeoutExeception

Sei que a mauina B está acessivel pois me conecto nela via SSH, e sei que não existem firewalls no caminho.

Alguem tem alguma ideia de como debugar ? eu não queria a principio usar sniffer e coisas do genero.

Att
Heitor

5 Respostas

PadrE

Opa…

Cara, faz tempo que não desenvolvo um ap´licação com socket… mas vou tentar ajudar…

Qndo isso ocorria era por 2 motivos possiveis:

  1. O lado servidor não ficara esperando pelo recebimento da chamada;
  2. Bloqueio da porta pelo cliente ou pelo servidor.

Bom… vc ja deve ter tentado fazer um ping no servidor… so para ter certeza q está na rede… as vezes ele n resolve o nome, dependendo de como foi feita a conexão… (eu acho).

Fui!

ViniGodoy

As razões mais comuns para isso são:

a) O server não se conectou à porta. Nesse caso, você provavelmente está ignorando alguma exceção do lado do server que mascara o problema. A porta pode estar em uso, por exemplo;

b) Existe realmente um firewall no caminho, barrando comunicação fora das Well-known ports;

c) O endereço do server no cliente (IP ou porta) está errado;

d) Você está tentando rodar num server que está na internet, na verdade, num server que está atrás de um NAT (numa sub-rede diferente da sua). Não foi configurado no NAT que requisições a esse servidor devem ser encaminhadas para seu o computador de sua aplicação servidora. Para o SSH, que é um protocolo seguro, isso provavelmente está configurado. Seria possível forçar uma conexão usando UDP e Hole punching, mas no caso do TCP, é necessário configurar corretamente o NAT.
HeitorFM

Legal, valew a resposta.

Mas ping não rola pq a mauina tá configurada pra não responder ping.
E o server está de pé pq fiz o teste rodando o cliente na mesma maquina do server e sem mexer no server rodei o cliente numa outra maquina, e então da erro.

deve ter alguma coisa no server bloqueando a porta para conexoes q não sejam locias, não sei é como descobrir oq é. A maquina eh linux.

abs

pmlm

Para confirmar isso podes fazer telnet à porta que estás a tentar ligar. Se der connection refused ou algo parecido é porque realmente algo está a bloquear a ligação.

PadrE

No teste local… vc ta usando o endereço 127.0.0.1 ?? tenta usar o ip da rede… pq assim ele vai passar pela rede mesmo… se der certo… o server ta ok… o problema esta no cliente…

Criado 28 de abril de 2009
Ultima resposta 29 de abr. de 2009
Respostas 5
Participantes 4