Estoy usando python 2.7 en una máquina ubuntu.¿Qué significa ECONNABORTED cuando intenta conectar un socket?
El cliente intenta conectarse al servidor. Obtengo un EINPROGRESS que se espera para enchufes sin bloqueo.
Para comprobar si la conexión es correcta, hago lo que la página del manual para conectar} {sugiere:
# EINPROGRESS The socket is nonblocking and the connection cannot be
# completed immediately. It is possible to select(2) or poll(2) for
# completion by selecting the socket for writing. After select(2)
# indicates writability, use getsockopt(2) to read the SO_ERROR option at
# level SOL_SOCKET to determine whether connect() completed successfully
# (SO_ERROR is zero) or unsuccessfully (SO_ERROR is one of the usual error
# codes listed here, explaining the reason for the failure)
Cuando el servidor está fuera de línea, esto me da una ECONNREFUSED. Hasta aquí todo bien.
Cuando la conexión falla, quiero volver a intentarlo varias veces.
Problema: la segunda vez que intento conectar ese mismo conector, {connect} me envía ECONNABORTED. Este no está en la página man de {connect}. Qué significa eso?
Incluso si haces que esto funcione, si fuera tú, no lo haría. No sé si la API de sockets técnicamente permite reutilizar un socket que no se pudo conectar antes, pero aunque a Linux no parece importarle, obtengo EINVAL en MacOS. Abra un nuevo socket cada vez. – Celada