迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

Python 中 ConnectionRefusedError: [Errno 61] Connection Refused 错误

作者:迹忆客 最近更新:2023/05/16 浏览次数:

有时在设计客户端-服务器程序时,您可能会遇到错误 ConnectionRefusedError。 当您的客户端程序因某些编码问题无法连接到服务器程序时,就会发生这种情况。

本文将展示我们如何在 Python 中获取 ConnectionRefusedError。 此外,我们将通过使用必要的示例和解释来讨论该主题,以使该主题更容易理解。


Python中 ConnectionRefusedError 错误是如何产生的

正如我们已经讨论过的,这个错误主要发生在客户端程序无法连接到服务器时。 为了理解这些,让我们考虑下面共享的客户端-服务器示例程序。

让我们看一下下面的服务器程序示例代码。

import socket

def ServerProgram():
    host = socket.gethostname()
    port = 5000
    ServerSocket = socket.socket()
    ServerSocket.bind((host, port))
    ServerSocket.listen(2)
    conn, ClientAddress = ServerSocket.accept()
    print("Connection from: " + str(ClientAddress))
    while True:
        ClientMsg = conn.recv(1024).decode()
        if not ClientMsg:
            break
        print("from connected user: " + str(ClientMsg))
        ClientMsg = input(' -> ')
        conn.send(ClientMsg.encode())
    conn.close()
if __name__ == '__main__':
    ServerProgram()

请注意 ,我们在上述程序中将端口设置为 5000。 现在看看我们的客户端程序。

import socket

def ClientProgram():
    host = socket.gethostname()
    port = 5001
    ClientSocket = socket.socket()
    ClientSocket.connect((host, port))
    ClientMessage = input(" -> ")
    while ClientMessage.lower().strip() != 'bye':
        ClientSocket.send(ClientMessage.encode())
        ServerMsg = ClientSocket.recv(1024).decode()
        print('Received from server: ' + ServerMsg)
        ClientMessage = input(" -> ")
    ClientSocket.close()
if __name__ == '__main__':
    ClientProgram()

我们故意在我们的客户端程序上犯了一个错误:我们将客户端程序上的端口设置为 5001。现在当您在服务器程序之后运行客户端程序时,您将收到如下所示的错误消息。

Traceback (most recent call last):
  File "F:\Python\client.py", line 25, in <module>
    ClientProgram()
  File "F:\Python\client.py", line 9, in ClientProgram
    ClientSocket.connect((host, port))  # connect to the server
ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it

发生此错误是因为客户端程序无法连接到服务器。 如果您先启动服务器程序,也会发生此错误。

在这种情况下,客户端程序将找不到要连接的服务器程序。


如何修复 Python 中的 ConnectionRefusedError

我们可以使用确切的服务器端口 5000 轻松修复上述错误。现在更新代码后,它将如下所示。

import socket

def ClientProgram():
    host = socket.gethostname()
    port = 5000 ## We fixed here.
    ClientSocket = socket.socket()
    ClientSocket.connect((host, port))
    ClientMessage = input(" -> ")
    while ClientMessage.lower().strip() != 'bye':
        ClientSocket.send(ClientMessage.encode())
        ServerMsg = ClientSocket.recv(1024).decode()
        print('Received from server: ' + ServerMsg)
        ClientMessage = input(" -> ")
    ClientSocket.close()
if __name__ == '__main__':
    ClientProgram()

执行客户端程序后,您将在客户端获得以下输出。

 -> Hi Server
Received from server: Hi Client
 -> This is a message from the client
Received from server: This is a message from the server

您将在服务器端看到以下输出。

Connection from: ('192.168.0.159', 11418)
from connected user: Hi Server
 -> Hi Client
from connected user: This is a message from the client
 -> This is a message from the server

请注意,在运行客户端程序之前必须先运行服务器程序; 否则,你会得到同样的错误。

请注意,此处讨论的命令和程序是用 Python 编程语言编写的。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Python 中 Importerror: Install XLRD for Excel Support 错误

发布时间:2023/05/16 浏览次数:162 分类:Python

在本篇文章中,我们将探讨在 Python 中使用 Pandas 包时可能遇到以下错误的原因和解决方案。ImportError: Install xlrd >= 0.9.0 for Excel support 。让我们首先简要介绍一下 Pandas。

解决 Python 中 TypeError: An Integer Is Required 错误

发布时间:2023/05/16 浏览次数:100 分类:Python

在 Python 代码中发生的另一个最常见的错误是 TypeError。本文将展示我们如何在 Python 中得到 TypeError。 此外,我们将通过使用必要的示例和解释来讨论该主题,以使该主题更容易理解。

Python 中 AttributeError: Int Object Has No Attribute 错误

发布时间:2023/05/15 浏览次数:175 分类:Python

修复 Python 错误 AttributeError: 'int' object has no attribute。本篇文章重点介绍并提供了一种解决方案,以应对我们在 Python 中使用 int 数据类型时可能发生的特定错误。

Python 中 NameError: The OS Module Is Not Defined 错误

发布时间:2023/05/15 浏览次数:112 分类:Python

os 模块提供了使我们能够与操作系统交互的函数和依赖项。如果在没有先导入os模块的情况下使用os模块函数,会导致错误,即NameError: the OS module is not defined in Python。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便