ConnectionRefusedError: [Errno 61] Conexión rechazada en Python

MD Aminul Islam 21 junio 2023
  1. Cómo ocurre el error ConnectionRefusedError en Python
  2. Cómo arreglar el ConnectionRefusedError en Python
ConnectionRefusedError: [Errno 61] Conexión rechazada en Python

A veces, al diseñar un programa cliente-servidor, puede obtener un error ConnectionRefusedError. Esto ocurrió cuando su programa cliente no pudo conectarse al programa servidor por algunos problemas de codificación.

Este artículo mostrará cómo obtenemos un ConnectionRefusedError en Python. Además, discutiremos el tema usando los ejemplos y explicaciones necesarios para facilitar el tema.

Cómo ocurre el error ConnectionRefusedError en Python

Como ya comentamos, este error ocurre principalmente cuando un programa cliente no puede conectarse al servidor. Para entender esto, consideremos nuestro programa de ejemplo cliente-servidor compartido a continuación.

Veamos nuestro código de ejemplo a continuación para el programa del servidor.

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()

Tenga en cuenta que configuramos el puerto en 5000 en nuestro programa anterior. Ahora eche un vistazo a nuestro programa de clientes.

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()

Intencionalmente cometemos un error en nuestro programa cliente: configuramos el puerto en el programa cliente a 5001. Ahora, cuando ejecute el programa del cliente después del programa del servidor, recibirá un mensaje de error como el siguiente.

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

Este error ocurrió porque el programa cliente no pudo conectarse al servidor. Este error también puede ocurrir si inicia primero el programa del servidor.

En esta situación, el programa cliente no encontrará ningún programa servidor con el que conectarse.

Cómo arreglar el ConnectionRefusedError en Python

Podemos corregir fácilmente el error anterior usando el puerto exacto del servidor, 5000. Ahora, después de actualizar el código, se verá como se muestra a continuación.

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()

Después de ejecutar el programa cliente, obtendrá el siguiente resultado en el lado del cliente.

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

Y verá el siguiente resultado en el lado del servidor.

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

Tenga en cuenta que debe ejecutar el programa del servidor antes de ejecutar el programa del cliente; de lo contrario, obtendrá el mismo error.

Tenga en cuenta que los comandos y programas discutidos aquí están escritos en el lenguaje de programación Python.

MD Aminul Islam avatar MD Aminul Islam avatar

Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.

LinkedIn

Artículo relacionado - Python Error