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

时间:2019-12-29 17:46:10

标签: python python-3.x sockets client-server

我看过许多类似的问题,但我无法弄清楚为什么从来没有建立连接,它们只是超时。我已经看到一些问题,暗示防火墙(Windows防火墙)问题可能会阻止我,但我不确定,我曾尝试在两台计算机上禁用防火墙,但问题仍然存在。还有python规则,允许两台计算机上的传入和传出连接。

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

我将一个设备保留在家庭网络中,将另一个设备保留在移动数据热点中,以模拟单独网络上的设备。我交换了这些设备。

我已经使用Wireshk来检查数据包,我可以看到数据包遗留在任一网络上但从未收到。

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

关于我为什么要面临这个问题的任何建议?

1 个答案:

答案 0 :(得分:0)

好的,我设法使其正常运行。与我之前所相信的相反,未设置端口转发。

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

https://portforward.com

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

相关问题