Solución:
Puede haber muchas razones, pero las más comunes son:
-
El puerto no está abierto en la máquina de destino.
-
El puerto está abierto en la máquina de destino, pero su acumulación de conexiones pendientes está llena.
-
Un cortafuegos entre el cliente y el servidor está bloqueando el acceso (también verifique los cortafuegos locales).
Después de verificar si hay firewalls y que el puerto está abierto, use telnet para conectarse a la ip / puerto para probar la conectividad. Esto elimina cualquier problema potencial de su aplicación.
El error significa que el sistema operativo del socket de escucha reconoció la solicitud de conexión entrante pero eligió rechazarla intencionalmente.
Suponiendo que un firewall intermedio no se interponga en el camino, solo hay dos razones (que yo sepa) para que el sistema operativo rechace una solicitud de conexión entrante. Ya se ha mencionado una razón varias veces: el puerto de escucha al que está conectado no está abierto.
Hay otra razón que aún no se ha mencionado: el puerto de escucha está realmente abierto y se está utilizando activamente, pero su acumulación de solicitudes de conexión entrante en cola ha alcanzado su máximo, por lo que no hay espacio disponible para que la solicitud de conexión entrante se ponga en cola en ese momento. El código del servidor aún no ha llamado a accept () suficientes veces para terminar de limpiar los espacios disponibles para nuevos elementos de la cola.
Espere un momento y vuelva a intentar la conexión. Desafortunadamente, no hay forma de diferenciar entre “el puerto no está abierto en absoluto” y “el puerto está abierto pero demasiado ocupado en este momento”. Ambos usan el mismo código de error genérico.
Si intenta abrir una conexión TCP a otro host y ve el error “Conexión rechazada”, significa que
- Envió un paquete TCP SYN al otro host.
- Luego recibió un paquete TCP RST en respuesta.
RST es un bit en el paquete TCP que indica que la conexión debe restablecerse. Por lo general, significa que el otro host ha recibido su intento de conexión y está rechazando activamente su conexión TCP, pero a veces un firewall intermedio puede bloquear su paquete TCP SYN y enviarle un TCP RST.
Consulte https://tools.ietf.org/html/rfc793 página 69:
ESTADO SYN-RECIBIDO
Si el bit RST está establecido
Si esta conexión se inició con un OPEN pasivo (es decir, vino del estado LISTEN), regrese esta conexión al estado LISTEN y regrese. No es necesario informar al usuario. Si esta conexión se inició con un OPEN activo (es decir, provenía del estado SYN-SENT), la conexión fue rechazada, indique al usuario “conexión rechazada”. En cualquier caso, se deben eliminar todos los segmentos de la cola de retransmisión. Y en el caso ABIERTO activo, ingrese al estado CERRADO y elimine la TCB, y regrese.