Я получаю следующую ошибку, когда мой клиент пытается подключиться к сокету моего сервера:
java.net.ConnectException: Connection refused: connect
Но мой сервер действительно работает на той же машине. Я пытаюсь подключиться к нему с помощью внешнего IP-адреса моего маршрутизатора. Но когда я пытаюсь соединиться с "localhost"
, это работает. И да, я правильно сделал переадресацию портов в моем роутере. Даже canyouseeme.org
может подключиться к моему серверу (на сайте написано: «успех» и в моем журнале сервера появляется сообщение о том, что кто-то подключен к серверу.)
Итак, по той или иной причине невозможно подключиться к одному и тому же компьютеру (или к компьютеру в той же сети) через внешний IP-адрес? Или это что-то типичное для Windows? (Обычно я использую Linux)
Я также пытался полностью отключить брандмауэр 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);
}
}
Клиент:
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");
}
}
Спасибо