即使转发端口,端口也会关闭

问题描述 投票:0回答:1

我想制作服务器(用于多人游戏),但无法通过我的公共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。。[。***)时,它不起作用,服务器也没有写消息“ New client connected:”(就像本地主机一样) )...所以我认为问题出在端口转发上。但是我试图向前移植,如您在图像中看到的:port forwarding on my router

但是它仍然不起作用。我还尝试在路由器中使用DMZ。结果相同。我还尝试关闭了我的抗病毒软件的防火墙和Web防护。同样的结果...即使我尝试通过一些在线测试(https://www.yougetsignal.com/tools/open-ports/)检查我的端口60 000是否打开,它也会说我的端口已关闭...那为什么它不起作用?我发现,即使我打开侦听端口80和443的Apache,用于检查打开端口的工具也会显示此端口(80和443)为关闭状态(即使我在路由器上打开DMZ)...为什么?注意:我确信,我使用正确的本地IP来设置端口转发和DMZ,我使用的IP给我ipconfig(并且正如我已经写的-当使用此本地地址(192.168.0.100时,客户端-服务器通信有效) )在我的PC上运行服务器...)请帮我! :)

javascript java websocket portforwarding dmz
1个回答
0
投票

您的问题与网络和网络路由有关。尝试从本地网络外部连接到服务器。来自互联网的某个地方。购买VPS或询问您的朋友。首先,您可以使用nmap检查端口是否打开。如果已打开,则可以连接到服务器。否则,这可能是您的D-LINK问题。我看到您已经有22个端口转发。使用D-LINK DIR-600路由器时,我也遇到类似的问题-端口已正确调整,但无法通过打开的端口进行连接。而且我只能通过使用DD-WRT-非官方固件来解决此问题。

© www.soinside.com 2019 - 2024. All rights reserved.