WinError 10061,Python 服务器和客户端连接问题

问题描述 投票:0回答:3

我有两个脚本:

server.py
client.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
。我已关闭防火墙。

另外,我已经尝试过这些问题,但没有解决问题:
目标机主动拒绝,导致无法连接?
如何解决由于目标机器主动拒绝而无法建立连接的问题 127.0.0.1:64527
无法连接,因为目标机主动拒绝127.0.0.1:3446
无法连接,因为目标机主动拒绝127.0.0.1
Errno 10061:无法建立连接,因为目标机器主动拒绝它(客户端 - 服务器)

python sockets connection
3个回答
2
投票

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

服务器.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()

客户端.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()

0
投票

我也有同样的问题,但我不使用套接字,这是我的代码: 从 Shutil 进口 从操作系统导入系统 从_thread导入start_new_thread 从时间导入睡眠

w1 = 其中(“蟒蛇”) w2 = 其中(“python3”) cmd = "python" if (w2==None or (w1!=None and ("WindowsApps" in w2))) else "python3"

计数 = 0

def 线程(): 全局计数 系统(cmd+“main.py”) 计数 -= 1

对于范围(8)内的 _: 计数 += 1 start_new_thread(线程化, ()) 睡眠(0.23)

计数时: 睡眠(0.1)


-1
投票

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

如果没有,您将需要通过

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

© www.soinside.com 2019 - 2024. All rights reserved.