Olá Pessoal,
Eu pesquisei sobre o assunto antes, pois não acredito que ninguém tenha passado por esse problema, já que muita gente acessa a internet através de um roteador. Aqui no GUJ eu encontri esse post: http://www.guj.com.br/posts/list/106049.java, entendi o problema do snoop, mas é diferente do meu…
Então, eu criei um programa de chat que funciona perfeitamente em loopback (127.0.0.1), pois o mesmo não chega a acessar a placa de rede etc… é tudo local. mas quando eu tento acessar do client pelo IP Externo (o ip do roteador) ele não vai de jeito nenhum…
O ServerSocket está “pegando” a porta 33333, que já configurei no roteador para encaminhar para minha máquina (10.1.1.11)… até ai tudo bem, ele deveria encaminhar… mas eu sinto que a aplicação java, o server socket não está conseguindo abrir essa porta (consumir esse serviço)… tipo, fiz a regra NAT usando RDR, e pesquisando eu descobri que o RDR não mantém a porta o tempo todo aberta, ele apenas abre quando um serviço solicita… no caso esse serviço seria meu servidor escrito em Java… ai vem a parte engraçada, qdo eu dou um serverSocket.accept() normal, ele pega a porta e abre na máquina local… mas no roteador não… então para quem tá de fora e tenta acessar pelo IP externo, essa porta está fechada :shock: …
Obs. também tentei configurar o NAT em BIMAP (redirecionando todas as portas) e também não funcionou.
Obs2. Firewall do windows está desligado, sem antivírus ou qualquer outro bloqueio…
Obs3. Tentei realizar um Bind no ServerSocket através do InetAddress externo: InetAddress add = InetAddress.getByName("189.176.54.164");
serverSocket.bind(new InetSocketAddress(add, 33333)); e também não foi… ele me retorna um: java.net.BindException: Cannot assign requested address: JVM_Bind
Não sei se ficou meio confuso, caso tenha ficado me avisem q tento detalhar mais…
se alguém conseguio fazer um serverSocket funcionar através de um roteador, porfavor, me socorre *rs!
Abraços.