ConnectionRefusedError: [Errno 61] Conexión rechazada en Python
-
Cómo ocurre el error
ConnectionRefusedError
en Python -
Cómo arreglar el
ConnectionRefusedError
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.
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.
LinkedInArtículo relacionado - Python Error
- Administrar fallas de segmentación en Python
- Archivo <Stdin>, Línea 1, en <Módulo> Error en Python
- Arreglar AttributeError: el objeto 'generador' no tiene atributo 'siguiente' en Python
- Arreglar el comando cl.exe falló: no existe tal archivo o directorio en Windows
- Arreglar NameError: la variable no está definida en Python
- Arreglar Socket.Gaierror: [Errno 8] Nodename ni Servname proporcionado, o desconocido en Python