我见过类似的问题,但他们无法修复此错误。我和我的朋友正在制作聊天程序,但我们不断收到错误 ConnectionRefusedError:[Errno 61]连接被拒绝 顺便说一句,我们在不同的网络上。 这是我的服务器代码
import socket
def socket_create():
try:
global host
global port
global s
host = ''
port = 9999
s = socket.socket()
except socket.error as msg:
print("Socket creation error" + str(msg))
#Wait for client, Connect socket and port
def socket_bind():
try:
global host
global port
global s
print("Binding socket to port: " + str(port))
s.bind((host, port))
s.listen(5)
except socket.error as msg:
print("Socket binding error" + str(msg) + "\n" + "Retrying...")
socket_bind
#Accept connections (Establishes connection with client) socket has to be listining
def socket_accept():
conn, address = s.accept()
print("Connection is established |" + " IP:" + str(address[0]) + "| port:" + str(address[1]))
chat_send(conn)
def chat_send(conn):
while True:
chat =input()
if len(str.encode(chat)) > 0:
conn.send(str.encode(chat))
client_response = str(conn.recv(1024), "utf-8")
print(client_response)
def main():
socket_create()
socket_bind()
socket_accept()
main()
我的客户代码
import socket
#connects to server
s = socket.socket()
host = '127.0.0.1'
port = 9999
s.connect((host, port))
#gets chat
while True:
data = s.recv(1024)
print (data[:].decode("utf-8"))
chat = input()
s.send(str.encode(chat))
答案 0 :(得分:2)
'127.0.0.1'
表示本地计算机 - 因此客户端与同一台计算机上的服务器连接。客户必须使用来自服务器的IP
,例如192.168.0.1
。
检查服务器:
Windows上的(cmd.exe
)
ipconfig
Linux上的(在控制台中)
ifconfig
但是,如果你在不同的网络,那么它可能无法正常工作。 ipconfig/ifconfig
返回仅在本地网络中可见的本地IP(如192.168.0.1
)。然后,您可能需要外部IP并在您的和提供商路由器上设置(重定向)。外部IP
可以是路由器或提供商路由器的IP。当您访问此类http://httpbin.org/ip之类的网页时,您可以看到外部IP。但它仍然需要一些工作,而不是更大的问题。
答案 1 :(得分:1)
这可能无法解答您的原始问题,但我遇到了这个错误,而且我只是在首先在我选择测试的端口上侦听localhost(127.0.0.1)时没有启动服务器进程。为了使客户端连接到localhost,服务器必须在localhost上进行侦听。
答案 2 :(得分:-1)
此代码对聊天无效,您必须使用解锁套接字和 select 模块或其他异步模块