【发布时间】:2017-08-08 22:38:00
【问题描述】:
我创建了一个 c++ 应用程序,它使用 poco 库 FTPclientsession 通过 ftp 下载二进制文件。为了计算下载进度,我使用以下代码逐字节将文件从 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;
当我尝试下载一个 1MB 的文件时,该文件在 ftp 服务器中由 1048576 个字节组成(使用 stat 命令检查),大多数情况下,iter 永远不会达到这个数字,但从 1048573 到 1048575 的值会减少一到三个字节。
它很少达到正确的尺寸。我还检查了 is.fail() 并注意到测量不正确的情况下设置了故障位。
这是二进制文件的问题,与服务器的连接不良还是我的代码有问题?
【问题讨论】: