【发布时间】:2019-08-27 08:19:04
【问题描述】:
我一直在尝试使用 Chilkat.Ftp2 下载大约 12GB 大小的大文件。
一切似乎都还好,但是.. 下载往往会在 ~100% 时失败,在日志中我可以看到:
获取文件:
日期:2019 年 7 月 30 日
奇尔卡特版本:9.5.0.79
解锁前缀:无
架构:小端; 32 位
语言:.NET 4.7 / x86
详细记录:0
originalGreeting: 220 Titan FTP Server Ready。
远程路径:/fo/bar/export_20190819.zip
本地路径:\test\export_20190819.zip
进度监控:
启用:是
心跳次数:0
发送缓冲区大小:65536
--进度监控
下载到文件:
本地文件路径:\test\export_20190819.zip
替换现有的本地文件
下载到输出2:
模式Z:0
二进制模式:1
设置数据连接:
被动转移模式
setupPassiveDataSocket:
发送命令:
发送命令:PASV
--发送命令
读取命令响应:
WindowsError:现有连接被远程主机强行关闭。
Windows 错误代码:0x2746
最大接收:65536
在 TCP 套接字上接收数据失败
读取 FTP 控制通道回复失败。
readFtpReply:套接字致命错误。
--readCommandResponse
--setupPassiveDataSocket
设置被动数据套接字失败
--setupDataConnection
设置下载数据连接失败。
readRepliesAfterFailedDataConn:
读取命令响应:
读取 FTP 控制通道回复失败。
readFtpReply:套接字连接关闭。
--readCommandResponse
--readRepliesAfterFailedDataConn
--downloadToOutput2
downloadToOutput:经过时间:18953 毫秒
--downloadToFile
失败的。 --获取文件
--ChilkatLog
到目前为止我尝试的是设置:
ftp.EnableEvents = true;
ftp.RestartNext = true;
ftp.Passive = false;
ftp.SoSndBuf = 131072;
ftp.SoRcvBuf = 131072;
还时不时打电话给ftp.Noop();,以保持连接“活跃”。
我错过了什么吗?
编辑:下载和重试的一些伪代码
string fileName = _ftp.GetFilename(i);
string remoteFilePath = sourcePath + fileName;
string destinationFilePath = destinationPath + fileName;
bool success = _ftp.GetFile(remoteFilePath, destinationFilePath);
if (success)
{
Log($"Downloading Finished {fileName} : {DateTime.Now.ToString("HH:mm:ss")}");
}
else
{
Thread.Sleep(30000);
success = _ftp.GetFile(remoteFilePath, destinationFilePath);
}
【问题讨论】: