ServerSocket p/ todas as portas

0 respostas
R

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

Criado 14 de agosto de 2006
Respostas 0
Participantes 1