poco libary FTPclientsessionを使用してftp経由でバイナリファイルをダウンロードするC++アプリケーションを作成しました。私はftpサーバに1048576バイト(で構成されて1メガバイトのファイルをダウンロードしようとするとC++のバイナリファイルをistreamからostreamにコピーすると、必ずしも正しいとは限りません。
char c = 0;
istream is;
ostream os;
std::streamsize iter = 0;
is.get(c);
while (istr && ostr)
{
++iter;
os.put(c);
is.get(c);
}
return iter;
:ダウンロードの進行状況をカウントするために、私は次のコードを使用してバイト単位でのostreamバイトへのIStreamからファイルをコピーしますstatコマンドでチェックした場合)、ほとんどの場合、この数字には達しませんが、1048573から1048575に1から3バイト少ない値が入ります。
ごくまれに正しいサイズまで測定します。また、is.fail()を調べて、測定値が正しくないケースがフェイルビットが設定されていることに気付きました。
これは、バイナリファイル、サーバーとの接続不良、またはコードの問題の問題ですか?