• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C# XceedFtp下载卡死解决方案

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

[背景]

我们项目中用到XceedFtp这个FTP组件来下载数据.但是由于我们的文件比较多每次下载过程中都会时不时的卡死,

也没有任何异常抛出,就一直卡在ReceiveFile这个方法上,试过很多办法,但是一直都没解决.....困扰了我们好长时间.

[解决方案]

今天尝试修改这个bug时,只是把这个ftp的模式改为主动就解决了.....当时是超郁闷啊...

_oFtp.PassiveMode = false;

这个暂时在局域网内测试十多次都没出现卡死的问题,等在公网测试结束再来补充.

究其原因还是对ftp的原理不是很了解吧,顺便补充一下ftp主动和被动模式的区别摘自

http://www.moon-soft.com/program/bbs/readelite1095089.htm

[FTP两种工作模式]

 主动模式(Active FTP)和被动模式(Passive FTP)

    在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令。服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。
    在被动模式下,FTP库户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开启N+1号端口。然后向服务器发送PASV命令,通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。
    总的来说,主动模式的FTP是指服务器主动连接客户端的数据端口,被动模式的FTP是指服务器被动地等待客户端连接自己的数据端口。
    被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTp服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而只允许由防火墙之后的主机发起的连接请求通过。因此,在这种情况下不能使用主动模式的FTP传输,而被动模式的FTP可以良好的工作。

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
PSP开发--[C++]接收按键控制发布时间:2022-07-13
下一篇:
C#小写转大写发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap