Python Websockets服务器可在localhost上运行,但不能在服务器上运行

时间:2019-08-01 04:10:44

标签: python python-3.x websocket

我使用python websockets创建了一个基本的聊天客户端和服务器,在我的PC上运行它,并且当我将其上传到Windows服务器计算机(已转发端口“ 12345”)并尝试访问它时,它工作得很好使用我电脑上的客户端,我得到一个ConnectionRefusedError

我尝试切换到另一个端口(该端口也已转发),但没有改变结果

客户端(这是导致错误的位)

ip = input("IP Address: ")
port = int(input("Port: "))
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((ip, port))

服务器

def open_socket(PORT:int, MAX_USERS:int):
    new_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_address = ("localhost", PORT)
    new_socket.bind(server_address)
    new_socket.listen(MAX_USERS)
    return new_socket

这是错误:

Traceback (most recent call last):
  File "client.py", line 24, in <module>
    sock.connect((ip, port))
ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it

编辑:尝试了Jin的答案后,我现在在同一位置(client.py中的第24行)收到超时错误 EDIT#2 :现在可以使用了!我将端口更改为原始端口(12345),并成功连接到服务器!

1 个答案:

答案 0 :(得分:1)

  1. 即使您在路由器中更改了端口转发配置,您仍需要在防火墙设置中检查服务器是否正在接受传入流量。您可以从“控制面板”-“安全性”或“ Windows防火墙”中执行此操作(对不起,我不记得Windows菜单的确切名称)。

  2. 您应该将IP与套接字而不是localhost绑定。您可能希望以编程方式获取您的IP地址,而不是使用硬编码的IP地址。以下链接将有所帮助。

Finding local IP addresses using Python's stdlib