
Estoy probando un pequeño script en Windows 8, que intenta buscar una página web simple en el puerto 80. Sin embargo, la conexión de red falla cada vez con un error.10053.
Inicialmente pensé en un problema de firewall (estoy ejecutando McAffee), pero ya no estoy tan seguro (no hay nada en los registros; todavía falla cuando desactivo el firewall).
Entonces, ¿qué puedo hacer para delimitar el problema? Por ejemplo, ¿cómo puedo estar seguro de si la solicitud salió de la tarjeta de red?
Ejecuté Wireshark y, de hecho, me muestra una pequeña actividad:
(yo) SINC
(ip remota) SYN, ACK
(yo) ACK
(yo) PRIMERO, ACK
Entonces, ¿significa que la solicitud fue efectivamente enviada?
gracias de antemano
Respuesta1
error de winsock10053 = "WSAECONNABORTED":
SOCKET_ERROR: el software de su máquina host canceló una conexión establecida.
El "software" mencionado es (muy probablemente)winsocksí mismo.
Encontróesta página, que tiene una excelente propaganda que parece cubrir exactamente lo que te estás encontrando, ya que probablemente tu script no forma un encabezado HTTP adecuado.
Se debe enviar un HTTP POST a un servidor HTTP.
El servidor comienza a leer la POST y nota que el encabezado de la solicitud HTTP no es válido.
Inmediatamente envía una respuesta HTTP (con un estado de error, tal vez estado = 400) y cierra la conexión sin intentar continuar leyendo el resto de la solicitud HTTP que está por llegar.
Mientras tanto, el cliente sigue escribiendo felizmente el resto de la solicitud HTTP en el socket. (Recuerde que una conexión de socket TCP/IP debe cerrarse desde ambos lados. En este caso, el servidor ha cerrado su lado, pero el cliente todavía está bombeando datos a la conexión medio abierta).
El cliente termina de escribir el HTTP POST en el socket, lo que significa que los datos se han almacenado en Winsock. Luego, la aplicación cliente intenta leer la respuesta HTTP, pero no puede porque la retransmisión saliente (de los datos almacenados en el búfer por parte de WinSock) falló y la conexión del socket se cerró en el lado del cliente (por parte de Winsock). Aunque el servidor HTTP envió la respuesta, se pierde y no se puede recuperar. El error que recibirá su aplicación al intentar leer la respuesta HTTP en el socket es WSAECONNABORTED.