简单客户端 - 服务器脚本不起作用,尝试连接时超时错误 10060

Simple Client - Server scripts don't work, Timeout error 10060 when attempting to connect

我看过很多类似的问题,但我不明白为什么连接永远不会建立,它们只是超时。我已经看到一些问题,建议防火墙(windows 防火墙)问题可能会阻止我,但我不太确定,我已经尝试在两台机器上禁用防火墙,但问题仍然存在。还有 python 规则允许两台机器上的传入和传出连接。

我已经检查了我的路由器设置,但我找不到任何建议禁用端口转发等的信息。

我将我的一台设备放在我的家庭网络上,另一台放在我的移动数据热点上,以模拟不同网络上的设备。我换了这些设备。

我已经使用 wireshark 检查数据包,我可以看到数据包离开任一网络但从未被接收。

client.py

import socket

HOST, PORT = SERVERS-EXTERNAL-IP, 65000 #Tried a variety of ports
data = "Hello very cool message"

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
    # Connect to server and send data
    sock.connect((HOST, PORT))
    sock.sendall(bytes(data + "\n", "utf-8"))


print(f"Sent:     {data}")

server.py

import socket

PORT = 65000
HOST = socket.gethostname() #Tried other things like '', ''localhost' etc
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind((HOST, PORT))
sock.listen(5)


print("Listening")
c, addr = sock.accept()
print("Accepted")
data = c.recv(1024)

sock.close()

client.py 结果:

Traceback (most recent call last):
  File "client.py", line 15, in <module>
    sock.connect((HOST, PORT))
TimeoutError: [WinError 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond

server.py 结果:

Listening

关于我为什么会遇到这个问题有什么建议吗?

好的,我设法让它工作了。没有设置端口转发,这与我之前的想法相反。

为了解决这个问题,我为我的服务器创建了一个静态本地 IP 地址,并在我的路由器设置中创建了一个端口转发规则,以将特定端口定向到服务器的静态 IP。以下站点非常有用:

https://portforward.com

还要感谢@SteffenUllrich 以正确的方式指导我。