Redirecionando sockets para outras portas

Tenho uma porta padrão no servidor e ao receber uma conexão é preciso redirecionar esse cliente para uma outra porta no servidor para liberar a porta padrão.
Como posso fazer o redirecionamento da maneira mais simples e eficiente?

Atualmente respondo a primeira conexão com o número da porta que desejo redirecionar então abro a porta para a conexão novamente:

[code]
Socket serverSocket = dataService.accept();
OutputStreamWriter out = new OutputStreamWriter(serverSocket.getOutputStream());

	out.write(actualyUsablePort);
	ServerSocket usableSocketService = new ServerSocket(actualyUsablePort++);
	Socket usableSocket = usableSocketService.accept();
	if (usableSocket.getInetAddress() != serverSocket.getInetAddress())
		throw new Exception("Unexpected connection");

	serverSocket.close();
	interpretMessage(usableSocket);[/code]

Da uma olhada nisso:

https://code.google.com/p/nettool4j/

Estava tentando entender, de fato quando uso ServerSocket ele abre a porta que defini como padrão e ao passar pelo accept ele abre uma nova porta local e cria o socket para ela ja deixando a porta do ServerSocket livre para reutilização?

Na verdade do lado servidor será sempre a mesma porta, o cliente que conecta em portas aleatórias.

Exactamente. Caso contrário o servidor não poderia processar um novo request e o cliente teria que adivinhar que porta está livre.
Ou seja, o que vc quer, já está embutido no funcionamento do ServerSocket.