1

commons-net の Java FTPClient クラスを使用して、ftp サーバーから大きなファイルをダウンロードしています。クライアント接続がダウンしたり、サーバーが接続を閉じたりするなどの接続障害を検出した場合、特定のオフセットからファイルのダウンロードを再開したいと考えています。client.retrieveFile(filename, out)ファイルのダウンロード中にクライアント接続を閉じても例外が発生しないため、プログラムはダウンロードも何もせずにそこでフリーズします。このイベントをトリガーするにはどうすればよいですか? FTPConnectionClosedException を見ましたが、サーバーが接続を閉じたときにのみ呼び出されます。

4

2 に答える 2

0

ダウンロードされたデータの量を表すことができるある種のシーケンス ID を保持し、合法的に終了したら特別な値に設定することができます。

sequence=0;
try{
while(notDone){
   n = client.retrieveFile(filename, out); //bytes read
   sequence =+ n;
}finally{
if(sequence != SPECIAL_VALUE){
    throw new customException();
    }
}

最終的にコードは finally ブロックを実行し、それをどのように処理するかを決定できます。または、より多くのソリューションが必要な場合は、最後に更新さfail fastれた時間を測定してタイムアウトを使用できます。sequence

お役に立てれば!

于 2013-07-26T11:10:33.030 に答える