【问题标题】:Simple Client - Server scripts don't work, Timeout error 10060 when attempting to connect简单客户端 - 服务器脚本不起作用,尝试连接时出现超时错误 10060
【发布时间】:2020-04-18 16:03:12
【问题描述】:

我查看了许多类似的问题,但我无法弄清楚为什么连接从未建立,它们只是超时。我已经看到一些问题,其中建议防火墙(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

关于我为什么会遇到这个问题的任何建议?

【问题讨论】:

  • “我找不到任何提示端口转发被禁用” - 这是一个奇怪的信息。端口转发需要在路由器中明确配置。默认情况下没有端口转发。这听起来像您没有配置任何端口转发,但希望它神奇地存在。
  • @SteffenUllrich 其他应用程序如何在没有访问我的路由器设置的情况下通过 Internet 进行通信?例如。我已经设置了一个 SSH 服务器,在此之前我可以在特定端口上进行外部访问,但不需要自己配置任何类型的端口转发。
  • 我不清楚你到底做了什么。但是,如果您在 NAT 路由器后面的本地网络中设置了 SSH 服务器,则需要进行端口转发以允许从内部访问。如果你已经在一些外部 VPS 上设置了 SSH 服务器,那么你就不需要端口转发。

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


【解决方案1】:

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

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

https://portforward.com

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

【讨论】:

    猜你喜欢
    • 2015-03-21
    • 2022-01-20
    • 2014-10-05
    • 1970-01-01
    • 1970-01-01
    • 2015-05-26
    • 1970-01-01
    • 2016-12-26
    • 2014-11-17
    相关资源
    最近更新 更多