Python connectionrefuedsederror:[Errno 61]连接被拒绝

2024-05-12 18:39:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我也看到过类似的问题,但我无法解决这个错误。我和我的朋友正在做一个聊天程序,但是我们一直都有错误 连接被拒绝错误:[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))

Tags: clientsendhostbindportdef错误chat
2条回答

这可能无法回答您最初的问题,但我遇到了此错误,原因很简单,我没有首先启动服务器进程来侦听我选择测试的端口上的localhost(127.0.0.1)。为了让客户端连接到本地主机,服务器必须监听本地主机。

'127.0.0.1'表示本地计算机,因此客户端与同一台计算机上的服务器连接。客户端必须使用来自服务器的IP192.168.0.1

检查服务器:

在窗户上(在cmd.exe

ipconfig

在Linux上(在控制台中)

ifconfig

但是,如果你在不同的网络,那么它可能不起作用。ipconfig/ifconfig返回仅在本地网络中可见的本地IP(如192.168.0.1)。然后,您可能需要在您和提供商路由器上设置外部IP和(重定向)。外部IP可以是路由器或提供商路由器的IP。当您访问类似于http://httpbin.org/ip的页面时,可以看到您的外部IP。但它仍然需要一些工作和更大的问题。

相关问题 更多 >