Я хочу создать сервер (для многопользовательской игры), но не могу подключиться к своему компьютеру через мой публичный IP-адрес. Мой сервер запрограммирован на Java следующим образом:
int port = 60000;
int client_num = 0;
ClientHandler clientHandler;
try (ServerSocket serverSocket = new ServerSocket(port)) {
System.out.println("Server is listening on port " + port);
while (true) {
Socket client = serverSocket.accept();
System.out.println("New client connected: "+client);
}
} catch (IOException ex) {
System.out.println("Server exception: " + ex.getMessage());
ex.printStackTrace();
}
Клиент запрограммирован в javascript следующим образом (я использую websockets):
var websocket = new WebSocket(
'ws://127.0.0.1:60000');
websocket.onopen = function () {
$('h1').css('color', 'green');
websocket.send("Hello");
$('h1').css('color', 'purple');
};
Вы можете видеть, что я использую то же самоепорт (60 000) как на сервере, так и на клиенте. В клиенте, где я пишу IP-адрес (ws: //127.0.0.1), я могу написать localhost (127.0.0.1) или мой личный ip (192.168.0.100) - И ЭТО РАБОТАЕТ! Но когда я пишу там мой публичный ip (что-то вроде 91. . . ***), он не работает и сервер не пишет сообщение «Новый клиент подключен:» (как в случаеиз местного хоста делаю) ... Так что я подумал, что проблема в переадресации портов. Но я попытался портировать вперед, как вы можете видеть на картинке:
Но это все равно не работает. Я также попытался использовать DMZ в моем маршрутизаторе. Те же результаты. Я также пытался отключить брандмауэр и веб-экран моего антивирусного ПО. Опять тот же результат ... Даже если я попытаюсь проверить, открыт ли мой порт 60 000, с помощью некоторого онлайн-теста (https://www.yougetsignal.com/tools/open-ports/), он говорит, что мой порт закрыт ... Так почему он не работает? У меня естьобнаружил, что даже если я включаю Apache, который прослушивает порты 80 и 443, инструменты для проверки открытых портов также показывают мне эти порты (80 и 443) как закрытые (даже когда я включаю DMZ на моем маршрутизаторе) ... ПОЧЕМУ? Примечание: я уверен, что я использую правильный локальный IP для настройки переадресации портов и DMZ, я использую IP, который дает мне ipconfig (а также, как я уже писал, связь клиент-сервер работает, когда я использую этот локальный адрес (192.168.0.100)) моего компьютера, на котором работает сервер ...) Пожалуйста, помогите мне! :)