Como alterar a porta em que o cliente está

Meu servidor sempre vai aceitar o cliente na porta 12345, eu estou criando um objeto para manipular essa conexão, meu objetivo é mudar o cliente para uma outra porta, para sim 12345 sempre estar livre ao receber um cliente.

if (CapConexao.cliente.getPort() == 12345) {
    for (ServerSocket serverSocket : portas) {
        if (serverSocket.isBound() == false) {

        }
    }
}

Eu não sei se estou fazendo correto, e não sei como prosseguir… eu tenho esse Hash de portas, que vem antes do if acima…

HashSet<ServerSocket> portas = new HashSet<>(10);

ServerSocket porta0 = new ServerSocket(1000);
ServerSocket porta1 = new ServerSocket(1001);
ServerSocket porta2 = new ServerSocket(1002);
ServerSocket porta3 = new ServerSocket(1003);
ServerSocket porta4 = new ServerSocket(1004);
ServerSocket porta5 = new ServerSocket(1005);
ServerSocket porta6 = new ServerSocket(1006);
ServerSocket porta7 = new ServerSocket(1007);
ServerSocket porta8 = new ServerSocket(1008);
ServerSocket porta9 = new ServerSocket(1009);

portas.add(porta0);
portas.add(porta1);
portas.add(porta2);
portas.add(porta3);
portas.add(porta4);
portas.add(porta5);
portas.add(porta6);
portas.add(porta7);
portas.add(porta8);
portas.add(porta9);

O que vc quer fazer não faz sentido. Vc não pode mudar a porta de conexão do cliente depois que ele já conectou.
Mas pelo que eu entendi seu problema na verdade é liberar a porta. Nesse caso talvez o problema seja que após conectar, você trata a conexão na mesma thread. O correto numa arquitetura cliente/servidor é assim que conectar, mandar o socket pra ser tratado em outra thread, assim vc já libera o listener da conexão para o próximo cliente.

1 curtida

É exatamente isso aí que eu quero fazer, tratar essa conexão, pode me dar um exemplo de como eu faço isso

Não é difícil