我有两个脚本:
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:无法建立连接,因为目标机器主动拒绝它(客户端 - 服务器)
在你的绑定中,你应该写“0.0.0.0”而不是“”来获取所有连接。另外,如果您在同一台计算机上运行服务器和客户端,则应使用“127.0.0.1”而不是公共 IP 地址,因为连接是在您自己的计算机上完成的。如果你在不同的计算机上运行每个程序,你可以使用计算机的本地 IP 地址,同样,不需要公共 IP 地址(你可以使用 cmd-write IPCONFIG 找到它,它会显示出来,大多数时候它看起来像“192.168.192.168”)。 x.x”。我将在这里添加对我有用的代码供您使用:
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()
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()
我也有同样的问题,但我不使用套接字,这是我的代码: 从 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)
您是否在路由器上端口转发了本地 IP 和 TCP 端口?
如果没有,您将需要通过
192.168.0.1
(取决于路由器上的设置)登录您的路由器,然后进入端口转发并添加一条规则(针对我的路由器),说明您服务器的本地 IP和 TCP 端口 5050
(来自您的代码)并保存。