estoy haciendo un pequeño cliente FTP para recibir algunos archivos grandes de ftp. He leído en RFC que el comando ABOR es muy problemático para los servidores. Casi todos los servidores que veo continúan enviando datos incluso después de que ABOR haya enviado la conexión de control. El cierre de la transferencia de datos puede resultar (en el 70% de las pruebas) también en la conexión de control de cierre. El servidor simplemente envía el paquete FIN después de mi paquete ABOR presionado. ¿Cuál es el mejor método para detener el acceso en algún byte y no perder la conexión de control? FlashFXP lo hace bien en todos los tipos de retrasos de conexión y servidores. Mientras investigaba el tráfico de tcp, encontré el flujo ftp rfc estándar.programación ftp: cómo cancelar la transferencia de archivos?
Pero en mi caso todavía sin éxito para anular la transferencia de uso de esta técnica:
1) apagado (passive_socket, SD_BOTH)
2) closesocket (passive_socket);
3) enviar (control_socket, "ABORALES \ r \ n")
4) recv (control_socket) - estancado aquí
Gracias
He estado leyendo acerca de los datos OOB en [otra pregunta en SO] (http://stackoverflow.com/questions/589928/socket-programming-how-do-i-handle-out-of-band-data/591104 # 591104) y también mencionan este caso de uso como un uso típico de datos OOB. Sin embargo, estoy confundido sobre por qué esto es necesario (o incluso recomendado) dado que parece depender de una arquitectura de servidor específica. Si el servidor está escuchando correctamente en la conexión de control y procesa el comando 'ABOR', puede simplemente cerrar la conexión de conexión de datos o detener el envío, ¿no es así? –
@ André, se describen los datos fuera de banda: "Datos urgentes" notifica a la conexión receptora que la transmisión separada es más importante que la transmisión principal. Por lo tanto, primero debe verificar la secuencia separada para procesar la transmisión principal normalmente. Pero en el mundo real significa (como creo) simplemente enviar paquetes TCP de datos con PSH establecidos sin importar el tamaño de la ventana u otras cosas.También me confundí porque esto solo está relacionado con el protocolo FTP que encontré primero. – Sergey
Entiendo cómo funciona. Sin embargo, si respeta el estado de conexión de control del programa cliente, no debe tener * nada * en el búfer de entrada de la conexión de control en el lado del servidor cuando 'ABOR' llega al servidor. Si el uso de OOB tiene un impacto en la velocidad de interpretación de este comando, entonces entendería que la conexión de datos deja de enviar datos más rápido. Sin embargo, el uso de OOB no explica cómo se interpretará el comando 'ABOR' (VS no, en absoluto, como en el caso de OP) en * cualquier * implementación del servidor FTP. –