Rede em Java: Conexão recusada - Sim, meu servidor está executando

Estou recebendo o seguinte erro quando meu cliente tenta se conectar ao meu soquete do servidor:

java.net.ConnectException: Connection refused: connect

Mas, meu servidor está realmente executando, na mesma máquina. Eu tento conectar a ele usando o IP externo do meu roteador. Mas quando tento me conectar com"localhost", funciona. E sim, fiz o encaminhamento de porta corretamente no meu roteador. Atécanyouseeme.org pode se conectar ao meu servidor (o site diz: "success" e, no meu server-log, parece que alguém se conectou ao servidor.)

Portanto, por um ou outro motivo, é impossível conectar-se à mesma máquina (ou a uma máquina na mesma rede) por meio de um IP externo? Ou isso é algo típico para Windows? (Normalmente, eu uso Linux)

Eu também tentei desativar completamente o Firewall do Windows.

ServerSocket:

public ServerSocket ssocket;
public List<ClientHandler> handlers;

public Server(int port) { // Constructor
    try {
        ssocket = new ServerSocket(port);
        this.handlers = new ArrayList<ClientHandler>();
        IpSharingManager.uploadData(Utilities.getPublicIp(), port);
    } catch (Exception e) {
        e.printStackTrace();
        System.exit(-1);
    }
}

Cliente:

public InvisibleClient(String host, int port) {
    try {
        System.out.println("Trying to connect to " + host + ":" + port);
        this.host = host;
        this.socket = new Socket(host, port);
        this.bis = new BufferedInputStream(this.socket.getInputStream());
        this.bos = new BufferedOutputStream(this.socket.getOutputStream());
        this.console = new RemoteConsole(this.socket);
        initializeCommunication();
        System.out.println("Successfully connected!");
        new Thread(this, "Client Thread").start();
    } catch (Exception e) {
        e.printStackTrace();
        System.out.println("No server available");
    }
}

obrigado

questionAnswers(4)

yourAnswerToTheQuestion