python-3.x 为什么会出现“连接被拒绝”错误

ruoxqz4g  于 2022-12-05  发布在  Python
关注(0)|答案(2)|浏览(238)

这是client.py课程,并且这是移动的课程。

import socket  
c = socket.socket()
c.connect(('127.0.0.1', 9998))
name = input("Enter your name : ")
c.send(bytes(name, 'utf-8'))
data = c.recv(1024).decode()
print(data)

这是server.py课程,这门课是在mac book pro上。

import socket
s = socket.socket()
s.bind(('localhost', 9998))
s.listen(2)
print('server is waiting for connections..')

while True:
    c, addr = s.accept()
    name = c.recv(1024).decode()
    print('connected with', addr, name)
    st = "Hello, " + name
    c.send(st)
    c.close()

为什么会出现“连接被拒绝”错误?

dy2hfwbg

dy2hfwbg1#

您的客户端和服务器运行在 * 不同 * 的设备上。您的客户端正在尝试连接到本地环回IP 127.0.0.1,只有当服务器与客户端运行在同一设备上时,该功能才能正常工作。这就是为什么您会收到“连接被拒绝”的消息-在127.0.0.1:9998上没有服务器在本地侦听。
如果客户端和服务器连接到同一网络(WiFi等),则客户端需要连接到该网络上服务器的实际LAN IP。
如果客户端和服务器连接到不同的网络(即,它们通过互联网相互连接),则客户端需要连接到服务器所连接网络的公共IP,并且该网络路由器需要配置 * 端口转发 * 以将传入连接路由到服务器设备。
另外,请注意,让服务器侦听localhost并不保证它能够接受来自其他设备的客户端,具体取决于localhost的实现方式。它 * 可能 * 仅解析为127.0.0.1。服务器应改为侦听通配符IP 0.0.0.0,以便侦听安装在该设备上的所有可用网络接口。或者,它也可以只侦听实际接收客户端连接的特定LANIP。

9lowa7mx

9lowa7mx2#

为了呼应雷米刚才正确的说法,“连接 * 被拒绝”* 确实有点误导。它基本上意味着没有人在监听主机试图到达的地址和端口。它不是意味着“有人在那里,但他[主动...] '拒绝'与你交谈。”“连接失败” 可能是一个更好的术语,但我们在这里。

相关问题