【问题标题】:WinError 10061, Python Server and Client connection problemWinError 10061,Python 服务器和客户端连接问题
【发布时间】:2021-01-02 19:02:19
【问题描述】:

我有两个脚本:server.pyclient.py,我正在尝试在全球范围内连接它们。它们是这样的:

server.py:

import socket

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(("", 5050))

while True:
    conn, addr = server.accept()

client.py:

import socket
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(("[my public ip (don\'t want to give away)]", 5050))

当我运行server.py 时,一切都很好。当我尝试与client.py 连接时,我收到错误消息:ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it。我已关闭防火墙。

另外,我也试过这些问题,但没有解决问题:
No connection could be made because the target machine actively refused it?
How to fix No connection could be made because the target machine actively refused it 127.0.0.1:64527
No connection could be made because the target machine actively refused it 127.0.0.1:3446
No connection could be made because the target machine actively refused it 127.0.0.1
Errno 10061 : No connection could be made because the target machine actively refused it ( client - server )

【问题讨论】:

    标签: python sockets connection


    【解决方案1】:

    在您的绑定而不是“”中,您应该编写“0.0.0.0”以获取所有连接。此外,如果您在同一台计算机上运行服务器和客户端,您应该使用“127.0.0.1”而不是您的公共 IP 地址,因为连接是在您自己的计算机上完成的。如果你在不同的计算机上运行每一个,你可以使用计算机的本地 IP 地址,同样,不需要公共 IP 地址(你可以用 cmd-write IPCONFIG 找到它,它会显示出来,大多数时候它看起来像“192.168. xx"。我将在此处添加对我有用的代码供您使用:

    server.py

    ​​>
    import socket
    server_socket = socket.socket()
    server_socket.bind(('0.0.0.0', 5050))
    server_socket.listen(1)
    (client_socket, client_address) = server_socket.accept()
    client_name = client_socket.recv(1024)
    what_to_send = 'Hello ' + client_name.decode()
    client_socket.send(what_to_send.encode())
    client_socket.close()
    server_socket.close()
    

    client.py

    ​​>
    import socket
    my_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    my_socket.connect(('127.0.0.1', 5050))
    name = input("Enter your name: ")
    my_socket.send(name.encode())
    data = my_socket.recv(1024)
    print(data.decode())
    my_socket.close()
    

    【讨论】:

    • 感谢您的回答!但是,我忘记在我试图在全球范围内连接的问题中包括在内。你能告诉我怎么做吗?
    【解决方案2】:

    您是否在路由器上转发了本地 IP 和 TCP 端口?

    如果您没有,您需要通过192.168.0.1(取决于您的路由器上的设置)登录到您的路由器,然后进行端口转发并添加一条规则(对于我的路由器),说明您的本地 IP您的服务器和 TCP 端口 5050(来自您的代码)并保存。

    【讨论】:

    • 可能需要在评论部分进行澄清...
    • @ShivendraPratapKushwaha 抱歉……我不确定你的意思。
    猜你喜欢
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多