2009-10-31 8 views
7

Java/FTP aracılığıyla Java'dan birkaç büyük dosyaya (birkaç konser) ihtiyacım var. İndirmeyi kolaylaştırmak için hazır bir kütüphane (java/komut satırı aracı) var mı? Bazı bariz gereksinimleri şunlardır:Java'da indirme yöneticisi

  1. Çoklu bağlantı indir - (FlashGet/getright/... gibi) indir
  2. Devam hızlandırmak için sunucuya çeşitli bağlantıları açmak mümkün olmalıdır bir indirme

Düzenleme - gerçekten böyle bir kütüphane yazmak ama varolan test, üretim dereceli kütüphane için onu (ya da öde) çalmamayı tercih ederim. HTTP ve FTP sitelerinden dosyaları indirmem gerektiğinden, rsynch ilgili değil, dahili dosya aktarımı için değil.

cevap

2

HTTP protokolü uzaklık bulunacak şekilde kısmi indir başlayan desteklemek, ama sonunda (ya da bir şey benzer) bağlı önemsiz yok olduğundan emin olmak için dosyanın yerel kısmi sürümünü doğrulamak için sınırlı destek sahiptir gelmez. Ortamınız izin veriyorsa, --partial seçeneğiyle rsync'u öneririm. Komut satırından bu tür işlevleri desteklemek için tasarlanmıştır. Eğer rsync kullanamıyorsanız

, sen Commons-HTTPClient ile çalışan ve yönetilebilir büyüklükte parçalar indirmek için Menzil HTTP üst kullanan denemek isteyebilirsiniz.

2

Java'da yuva ve iş parçacığı oluşturmayı biliyorsanız, o kadar da zor değil.

Önce bir isteği oluşturur ve Content-length başlığını almak için başlıklarını okuyun. Ardından isteğinizi, örneğin her istekte 500 bin parça halinde bölmek için bir strateji tasarlayın. Ardından her istek için bir iş parçacığı kullanarak 10 istek başlayın. Her istekte Range başlığını tanımlamanız gerekir.

Yüklemenizi sürdürmek, henüz indirmediğiniz aralıkları kaydetme konusudur. Kullanılan protokolde gerçekten iyi bir kavrayış almak istiyorsanız, bu HTTP/1.1 Header Fields RFC here'u okumanızı öneririm.

Eğer rsync veya scp için kolay bir çıkış yolu arıyorsanız yeterlidir.