Python socket timing out on other computer. TimeoutError: [WinError 10060]

Python socket timing out on other computer. TimeoutError: [WinError 10060]

我正在尝试通过 python 套接字将客户端连接到服务器。客户端在我的电脑上连接成功,但其他网络上的人无法连接。

TimeoutError: [WinError 10060] 连接失败后在客户端。这是我的 python 脚本的代码。

Server.py

import socket
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = "0.0.0.0"
port = 8000
print (host)
print (port)
serversocket.bind((host, port))

Client.py

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = "##.###.###.###" # server's public ip.
port = 8001
s.connect((host,port))
print("Connected to server.")
s.send(("Client connected").encode())

端口不同,因为如果我的路由器上的本地端口和外部端口不同,我就无法连接;本地存在 8000 和外部存在 8001。如果客户端在我的电脑上,服务器会显示它正在通过 public ip 连接,因此它正在通过我的路由器。

在我的服务器计算机上执行 nmap -p 8000 -sN -P0 192.168.0.#,显示端口已使用 http-alt 关闭。在我的 public ip 上执行此操作表明它已使用 vcom-tunnel 打开|过滤,但它几乎在每个端口上都打开|过滤。

我试过的:

这可能是我使用的与 http-alt/vcom-tunnel 有关的端口,而不是与 upnp 相关的端口。

问题是将我端口上的外部 ip 转发到我的 public ip。它设置的 ip 是什么,它只是扫描我的 ip,这让只有我的电脑能够连接到它。我将外部 ip 设置为 0.0.0.0,使端口对所有 ip 开放。