Порт закрыт, даже когда я перенаправлен - PullRequest
0 голосов
/ 27 октября 2019

Я хочу создать сервер (для многопользовательской игры), но не могу подключиться к своему компьютеру через мой публичный 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. . . ***), он не работает и сервер не пишет сообщение «Новый клиент подключен:» (как в случаеиз местного хоста делаю) ... Так что я подумал, что проблема в переадресации портов. Но я попытался портировать вперед, как вы можете видеть на картинке: port forwarding on my router

Но это все равно не работает. Я также попытался использовать DMZ в моем маршрутизаторе. Те же результаты. Я также пытался отключить брандмауэр и веб-экран моего антивирусного ПО. Опять тот же результат ... Даже если я попытаюсь проверить, открыт ли мой порт 60 000, с помощью некоторого онлайн-теста (https://www.yougetsignal.com/tools/open-ports/), он говорит, что мой порт закрыт ... Так почему он не работает? У меня естьобнаружил, что даже если я включаю Apache, который прослушивает порты 80 и 443, инструменты для проверки открытых портов также показывают мне эти порты (80 и 443) как закрытые (даже когда я включаю DMZ на моем маршрутизаторе) ... ПОЧЕМУ? Примечание: я уверен, что я использую правильный локальный IP для настройки переадресации портов и DMZ, я использую IP, который дает мне ipconfig (а также, как я уже писал, связь клиент-сервер работает, когда я использую этот локальный адрес (192.168.0.100)) моего компьютера, на котором работает сервер ...) Пожалуйста, помогите мне! :)

1 Ответ

0 голосов
/ 27 октября 2019

Ваша проблема связана с сетью и сетевой маршрутизацией. Попробуйте подключиться к вашему серверу за пределами вашей локальной сети. Где-то из интернета. Купите VPS или спросите своего друга. Прежде всего вы можете проверить, открыт ли ваш порт, используя nmap. Если он был открыт, вы можете подключиться к вашему серверу. В противном случае это может быть вашей проблемой D-LINK. Я вижу, у вас уже есть 22 переадресация портов. Когда я использовал маршрутизатор D-LINK DIR-600, у меня была похожая проблема - порт был настроен правильно, но я не смог подключиться через открытый порт. И я мог решить эту проблему только с помощью DD-WRT - неофициальная прошивка.

...