Error de conexión rechazada: [Errno 111] Conexión rechazada

Zeeshan Afridi 21 junio 2023
  1. Por qué se produce el Error de conexión rechazada: [Errno 111] Conexión rechazada en Python
  2. Cómo resolver el Error de conexión rechazada: [Errno 111] Conexión rechazada en Python
  3. Conclusión
Error de conexión rechazada: [Errno 111] Conexión rechazada

Este error indica que el cliente no puede conectarse al puerto en el sistema del script del servidor. Dado que puede hacer ping al servidor, no debería ser el caso.

Esto puede deberse a muchas razones, como una ruta incorrecta al destino. La segunda posibilidad es que tenga un firewall entre su cliente y el servidor, que puede estar en el servidor o en el cliente.

No debe haber enrutadores ni cortafuegos que puedan detener la comunicación ya que, según las direcciones de su red, tanto el servidor como el cliente deben estar en la misma red de área local.

Por qué se produce el Error de conexión rechazada: [Errno 111] Conexión rechazada en Python

Este error surge cuando el cliente no puede acceder al servidor debido a una IP o puerto no válido o si la dirección no es única y la utiliza otro servidor.

El error de conexión rechazada también surge cuando el servidor no se está ejecutando, por lo que el cliente no puede acceder al servidor ya que el servidor debe aceptar la conexión primero.

Ejemplo de código:

# server code
import socket

s = socket.socket()
host = socket.gethostname()
port = 1717
s.bind((host, port))

s.listen(5)
while True:
    c, addr = s.accept()
    print("Got connection ", addr)
    c.send("Meeting is at 10am")
    c.close()
# client code
import socket

s = socket.socket()
host = "192.168.1.2"
port = 1717

s.connect((host, port))
print(s.recv(1024))
s.close

Producción :

socket.error: [Errno 111] Connection refused

Cómo resolver el Error de conexión rechazada: [Errno 111] Conexión rechazada en Python

Trate de mantener el enchufe receptor lo más accesible posible. Tal vez la accesibilidad solo se llevaría a cabo en una interfaz, lo que no afectaría a la red de área local.

Por otro lado, un caso puede ser que escuche exclusivamente la dirección 127.0.0.1, imposibilitando conexiones desde otros hosts.

Ejemplo de código:

import socket

s = socket.socket()
host = socket.gethostname()
port = 1717
s.bind(("", port))

s.listen(5)
while True:
    c, addr = s.accept()
    print("Got connection ", addr)
    c.send("The Meeting is at 10 am")
    c.close()
import socket

s = socket.socket()
host = socket.gethostname()
port = 1717
s.bind(("", port))

s.connect((host, port))
print(s.recv(1024))
s.close()

Producción :

Got connection('192.168.1.2')
The meeting is at 10 am

Cuando ejecute el comando python server.py, recibirá el mensaje Conexión conseguida. Al mismo tiempo que ejecuta el comando python client.py, recibirá un mensaje del servidor.

La resolución DNS puede ser la otra razón detrás de este problema. Dado que socket.gethostname() devuelve el nombre de host, se devolverá un error si el sistema operativo no puede traducirlo a una dirección local.

El sistema operativo Linux puede editar el archivo de host agregando una línea.

host = socket.gethostname()
port = 1717
s.bind((host, port))

Utilice gethostbyname

host = socket.gethostbyname("192.168.1.2")
s.bind((host, port))

Por lo tanto, debe usar la misma técnica en los lados del cliente y del servidor para acceder al host. Por ejemplo, aplicaría el procedimiento descrito anteriormente en el caso de un cliente.

También puede acceder a través del nombre de host local hostnamehost = socket.gethostname() o el nombre específico del host local host = socket.gethostbyname("localhost").

host = socket.gethostname()
s.connect((host, port))
host = socket.gethostbyname("localhost")
s.connect((host, port))

Conclusión

ConnectionRefusedError en Python surge cuando el cliente no puede conectarse al servidor. Varias razones incluyen que el cliente no conozca la IP o la dirección del puerto y que el servidor no se esté ejecutando cuando el cliente desea conectarse.

Hay varios métodos mencionados anteriormente para resolver este problema de conexión.

Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

Artículo relacionado - Python Error