ServerSocket p/ todas as portas

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:

  1. 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:

  1. Cria um ServerSocket sem definir uma porta específica;
  2. Detecta requisições e suas portas;
  3. 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