Olá,
Por acaso alguém sabe me dizer se há no J2SE (1.5) alguma classe que funcione como um ServerSocket, porém para todas as portas?
Estou querendo fazer um proxy-firewall pessoal, que mapeia todas as minhas portas e retransmite os pacotes p/ seus destinos se assim achar que deve. Porém, a única forma que consegui fazer isso foi:
…
// Para criar escutar uma porta especifica
// int port = a porta que eu quero usar;
ServerSocket server = new ServerSocket(port);
…
// Aqui eh uma Thread do Server descrito acima
Socket socket = server.accept();
Assim, eu crio uma Thread p/ uma porta específica que recebe as conexões que tentarrem acessar meu micro naquela porta e a partir de então eu faço o que tem que ser feito.
Para eu mapear todas as portas, estou tendo que fazer uma Thread p/ cada porta, o que não está sendo eficiente.
Existe alguma maneira de detectar uma requisição de conexão? Se existir, eu posso fazer algo do tipo:
- Detecta a porta em que a requisição vem;
2.2) Se não houver um ServerSocket p/ a porta em questão, cria um ServerSocket para aquela porta e passa p/ o próximo passo (se ocorrer um “java.net.BindException: Address already in use”, devido a programas externos usando a porta, não tem problema, posso tratar isso aqui)
2.1) Se houver um ServerSocket para a porta em questão, usa-o para dar um accept;
Ou então algo do tipo:
- Cria um ServerSocket sem definir uma porta específica;
- Detecta requisições e suas portas;
- Ao chegar uma requisição, dá um bind no ServerSocket p/ a porta em questão e dá um accept;
Se alguém souber de alguma classe do J2SE que faça isso (ou auxilie p/ isto) será de grande ajuda.
Desde já, muito obrigado!
Romeu Júnior