Ich mache einen kleinen FTP-Client, um einige große Dateien von FTP zu erhalten. Ich habe im RFC gelesen, dass der ABOR-Befehl für Server sehr problematisch ist. Fast alle Server, die ich sehe, senden weiterhin Daten, auch nachdem ABOR über die Kontrollverbindung gesendet wurde. Das Beenden der Datenübertragung kann (in 70% der Tests) dazu führen, dass auch die Kontrollverbindung beendet wird. Der Server sendet einfach ein FIN-Paket, nachdem ich ein ABOR-Paket gesendet habe. Was ist die beste Methode, um den Empfang bei einem Byte zu stoppen und die Kontrollverbindung nicht zu verlieren? FlashFXP macht das bei allen Arten von Verbindungsverzögerungen und Servern gut. Bei der Untersuchung des TCP-Verkehrs habe ich den Standard-ftp rfc flow gefunden.
Aber in meinem Fall ist es immer noch nicht gelungen, die Übertragung mit dieser Technik abzubrechen:
1) shutdown(passive_socket, SD_BOTH)
2) closesocket(passive_socket);
3) send(control_socket, "ABOR \r\n ")
4) recv(control_socket) - hier blockiert
Dankeschön