gpt4 book ai didi

javascript - 即使我进行端口转发,端口也会关闭

转载 作者:行者123 更新时间:2023-12-01 22:22:53 25 4
gpt4 key购买 nike

我想制作服务器(用于多人游戏),但我无法通过我的公共(public) 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) 或我的私有(private) ip (192.168.0.100) - 并且它可以工作!但是当我在那里写下我的公共(public)IP(例如91...***)时,它不起作用并且服务器不会写入消息“新客户端已连接:”(例如如果是本地主机,则执行)...所以我认为问题出在端口转发中。但我尝试向前移植,如图所示: port forwarding on my router

但是还是不行。我还尝试在我的路由器中使用 DMZ。结果相同。我还尝试关闭防病毒软件的防火墙和网络防护。再次得到相同的结果...即使我尝试通过一些在线测试( https://www.yougetsignal.com/tools/open-ports/ )检查我的端口 60 000 是否打开,它也说我的端口已关闭...那么为什么它不起作用?我发现,即使我打开监听端口 80 和 443 的 Apache,用于检查开放端口的工具也会显示该端口(80 和 443)已关闭(即使我在路由器上打开 DMZ)...为什么?注意:我确信,我使用正确的本地 IP 来设置端口转发和 DMZ,我使用为我提供 ipconfig 的 IP(而且正如我已经写过的那样 - 当我使用此本地地址(192.168.0.100)时,客户端-服务器通信可以正常工作)我的服务器运行的电脑...)请帮我! :)

最佳答案

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

关于javascript - 即使我进行端口转发,端口也会关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58579021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com