使用IDFTP下载资料出现错误:socket error # 10054

linghengmao 2016-05-11 11:12:11
程序使用INDY控件下载文件,代码如下,几十台电脑,就只有一台电脑出现问题,此台电脑的防火墙也关闭了。
不知什么原因,就是下载不了。请赐教!

var
Name{, Line}: String;
begin
Result:= False;
try
Name:= 'abc.ZIP';


IdFTP1.TransferType:= ftBinary;
BytesToTransfer := IdFTP1.Size(Name);
//BytesToTransfer := BytesToTransfer - FileSizeByName(Name);
//如果存在先删除
if FileExists('D:\abc.ZIP') then
DeleteFile('D:\abc.ZIP');

IdFTP1.Get(Name, 'D:\abc.ZIP', false, true); //执行到这句出错 socket error # 10054

IdFTP1.Quit;
Result:= true;
except
Result:= False;
end;
end;
...全文
339 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
jjpweb 2016-05-18
  • 打赏
  • 举报
回复
那是路由器对这个电脑的mac做屏蔽了
linghengmao 2016-05-16
  • 打赏
  • 举报
回复
问题解决了,本以为是电脑的问题,换了一台电脑试也是不行,后来换了个新的路由器就可以了。 也不知那路由器出了什么问题,上网上Q都正常得很。
lyhoo163 2016-05-13
  • 打赏
  • 举报
回复
与网线的连接,电脑IP参数,操作系统的网络连接参数有关。
linghengmao 2016-05-13
  • 打赏
  • 举报
回复
现在的问题是换了一台电脑也是不行的。这可以肯定跟网络有关,跟电脑是没有关系的。 现在调试发现当执行到 idftp.list()这个方法时就出错!
mdejtod 2016-05-12
  • 打赏
  • 举报
回复
尝试一下,Passive := False; 另外建议在下载过程中创建IDFTP控件,使用单独的连接
mdejtod 2016-05-12
  • 打赏
  • 举报
回复
看错了,楼主用的是FTP。。。
mdejtod 2016-05-12
  • 打赏
  • 举报
回复
查看下载链接类型是http,还是https ,建议使用TIdSSLIOHandlerSocketOpenSSL

fstream := TFileStream.Create(qrcodefile,fmCreate);
iohandle := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
FIDHTTP.IOHandler := iohandle;
FIDHTTP.Request.ContentType := 'application/x-www-form-urlencoded';
FIDHTTP.Request.Accept := 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*';
FIDHTTP.Request.UserAgent:='Mozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12F70 Safari/600.1.4';
try
   FIDHTTP.Get(qrcodeurl,fstream);
except
end;
 FreeAndNil(fstream);
 FreeAndNil(iohandle);
linghengmao 2016-05-12
  • 打赏
  • 举报
回复
引用 6 楼 linuxpingwangping 的回复:
Socket error (#10054): Connection reset by peer. 有三种可能: 1.中病毒了。请查看系统目录是否存在一个C:\WINDOWS\Media,里边是否有Click.exe Svchost.exe和Csrss.exe。对了,就是这个文件在搞鬼,同时你也会在注册表里找到这个文件相应的调用项。 2.注册表中的: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Winsock HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Winsock2 中有错误, 备份后找一台相同的机器的注册表分支 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Winsock HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Winsock2 导入即可。 3. 经常出现的Connection reset by peer: 原因可能是多方面的,不过更常见的原因是:①:服务器的并发连接数超过了其承载量,服务器会将其中一些连接Down掉;②:客户关掉了浏览器,而服务器还在给客户端发送数据;③:浏览器端按了Stop 连接被防火樯或proxy中断"或因为您有安装ip分享器请将ip分享器先拿掉,直接将计算机接adsl的线路重启后重新上传
C:\WINDOWS\Media,这个目录是有的,但里面没有Click.exe Svchost.exe和Csrss.exe这几个文件。只采用了TPLINK路由器,不知你所说的IP分享器是什么?以前一址是可以下的,最近这几天都不可以下载,FTP服务器也重启过了也是不行的。其他几十台电脑下载是正常。我怀疑那台电脑哪里的设置出了什么问题。
linghengmao 2016-05-12
  • 打赏
  • 举报
回复
引用 5 楼 mdejtod 的回复:
尝试一下,Passive := False; 另外建议在下载过程中创建IDFTP控件,使用单独的连接
Passive已经是flase了。 在下载过程中重新创建IDFTP也不行。
  • 打赏
  • 举报
回复
Socket error (#10054): Connection reset by peer. 有三种可能: 1.中病毒了。请查看系统目录是否存在一个C:\WINDOWS\Media,里边是否有Click.exe Svchost.exe和Csrss.exe。对了,就是这个文件在搞鬼,同时你也会在注册表里找到这个文件相应的调用项。 2.注册表中的: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Winsock HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Winsock2 中有错误, 备份后找一台相同的机器的注册表分支 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Winsock HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Winsock2 导入即可。 3. 经常出现的Connection reset by peer: 原因可能是多方面的,不过更常见的原因是:①:服务器的并发连接数超过了其承载量,服务器会将其中一些连接Down掉;②:客户关掉了浏览器,而服务器还在给客户端发送数据;③:浏览器端按了Stop 连接被防火樯或proxy中断"或因为您有安装ip分享器请将ip分享器先拿掉,直接将计算机接adsl的线路重启后重新上传
jjpweb 2016-05-11
  • 打赏
  • 举报
回复
大部分能用就说明是机器问题,可能端口屏蔽,网络不通等 直接重装系统,方便省事。
linghengmao 2016-05-11
  • 打赏
  • 举报
回复
是否有人碰到类似的问题呀?

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧