Bazı büyük dosyaları ftp'den almak için küçük ftp istemcisi yapıyorum. RFC'de, ABOR komutunun sunucular için çok sorunlu olduğunu okudum. Gördüğüm neredeyse tüm sunucular, ABOR kontrol bağlantısı yoluyla gönderildikten sonra bile veri göndermeye devam ediyor. Veri aktarımının kapatılması, kontrol bağlantısının kapatılmasında da (testlerin% 70'inde) sonuçlanabilir. Sunucu, itilmiş ABOR paketimden sonra FIN paketini gönderir. Bazı baytlarda almayı durdurmak ve kontrol bağlantısını kaybetmemek için en iyi yöntem hangisidir? FlashFXP, her türlü bağlantı gecikmesi ve sunucuda bunu tamamlıyor. Tcp trafiğini araştırırken standart ftp rfc akışı buldum. programlama ftp: dosya aktarımı nasıl iptal edilir?
Ama benim durumumda
hala hiçbir başarı bu tekniği kullanarak transferi iptal etmek:1) kapatma (passive_socket, SD_BOTH)
2) kapatması (passive_socket);
3) göndermek (control_socket, "ABOR \ r \ n")
4) recv (control_socket) -
teşekkür ederiz burada durdu
[SO] ile ilgili başka bir soruda OOB verilerini okuyordum (http://stackoverflow.com/questions/589928/socket-programming-how-do-i-handle-out-of-band-data/591104 # 591104) ve bu kullanım örneğini OOB verilerinin tipik bir kullanımı olarak belirtiyorlar. Bununla birlikte, belirli bir sunucu mimarisine bağlı olduğu göz önüne alındığında bunun gerekli (veya hatta tavsiye edilen) neden olduğu konusunda kafam karıştı. Sunucu kontrol bağlantısını düzgün bir şekilde dinliyor ve 'ABOR 'komutunu işliyorsa, veri bağlantı soketini sadece kapatabilir veya göndermeyi kesebilir, değil mi? –
@ André, bant dışı verilerinden çıkarıldı: "Acil veriler", alıcı bağlantıyı ayrı akışın ana akıştan daha önemli olduğunu bildirir. Bu nedenle, ana akışı normal olarak işlemek için öncelikle ayrı akışı kontrol etmelidir. Ama gerçek dünyada (sanırım) sadece pencere boyutu veya başka bir şeyden bağımsız olarak PSH seti ile veri TCP paketi göndermek anlamına gelir.Ben de kafam karıştı çünkü bu sadece ilk önce bulduğum FTP protokolüyle ilgili. – Sergey
Nasıl çalıştığını anlıyorum. Bununla birlikte, istemci bağlantı programından kontrol bağlantı durumuna saygı duyarsanız, sunucuya "ABOR" ulaştığında, sunucu tarafındaki kontrol bağlantısının giriş arabelleğinde * hiçbir şey * olmamalıdır. Eğer OOB kullanılması bu komutun yorumlanmasının hızı üzerinde bir etkiye sahipse, veri bağlantısının daha hızlı veri göndermeyi durdurduğunu anlayacağım. Ancak, OOB kullanmak, herhangi bir FTP sunucusu uygulamasında * ABOR komutunun nasıl yorumlanacağını (OP'nin durumunda olduğu gibi VS) nasıl açıklayacağını açıklamamaktadır. –