利用Indy的TIdFtp控件实现FTP协议
日期:2007年5月2日 作者: 查看:[大字体 中字体 小字体]-
现在很多应用都需要上传与下载大型文件,通过HTTP方式上传大文件有一定的局限性。幸好FTP作为一个非常老而且非常成熟的协议可以高效稳定地完成大文件的上传下载,并且可以完美地实现续传。就拿我写的电影服务器管理端程序来说,各种方案比较后,发现使用FTP可以完美地实现要求。但是要通过WinSocket库实现FTP比较麻烦,幸好有Indy--一个包装了大多数网络协议的组件包。
通过Indy,程序设计人员可以通过阻塞方式进行编程,可以抛开蹩脚的Winsocket异步模式,采用与Unix系统上等同的阻塞编程模式进行。这样,程序员就可以很好的处理程序的运行流程。 下面,我们进入到Indy的TIdFtp世界。
1.控件的说明
使用Indy 9中的TIdFtp控件可以实现通过FTP方式进行文件的上传与下载。
2.控件的具体使用
(1)控件属性设置
默认属性即可,与服务器连接直接相关的属性如主机名与用户等在建立连接时进行设定。需要设定的是RecvBufferSize和SendBufferSize两属性的值。另外需要根据要传输的文件类型指定TransferType属性,而其他属性按默认值设定即可。
RecvBufferSize说明(默认值为8192字节):该属性为整型变量,用于指定连接所用的接受缓冲区大小。
SendBufferSize说明(默认值为32768字节):该属性也为整型变量,用于指定连接所用的发送缓冲区的最大值。该属性在WriteStream方法中时,可用于TStream指定要发送内容的块数。如果要发送的内容大于本属性值,则发送内容被分为多个块发送。
TransferType说明(默认值为ftBinary):该属性为TIdFTPTransferType型变量。用于指定传输内容是二进制文件(ftBinary )还是ASCII文件(ftASCII)。应用程序需要使用二进制方式传输可执行文件、压缩文件和多媒体文件等;而使用ASCII方式传输文本或超文本等文本型数据。
(2)控件的事件响应
OnDisconnected响应:TNotifyEvent类,用于响应断开(disconnect)事件。当Disconnect方法被调用用来关闭Socket的时候,触发该响应。应用程序必须指定该事件响应的过程,以便对该断开事件进行相应。
OnStatus响应:TIdStatusEvent类。该响应在当前连接的状态变化时被触发。该事件可由DoStatus方法触发并提供给事件控制器属性。axStatus是当前连接的TIdStatus值;aaArgs是一个可选的参数用于格式化函数,它将用于构造表现当前连接状态的文本消息。
OnWork响应:OnWord是TWorkEvent类事件的响应控制器。OnWork用于关联DoWork方法当缓冲区读写操作被调用时通知Indy组件和类。它一般被用于控制进度条和视窗元素的更新。AWorkMode表示当前操作的模式,其中:wmRead-组件正在读取数据;wmWrite-组件正在发送数据。AWorkCount指示当前操作的字节计数。
OnWorkBegin响应:TWorkBeginEvent类。当缓冲区读写操作初始化时,该事件关联BeginWork方法用于通知Indy组件和类。它一般被用于控制进度条和视窗元素的更新。AWorkMode表示当前操作的模式,其中:wmRead-组件正在读取数据;wmWrite-组件正在发送数据。AWorkCountMax用于指示发送到OnWorkBegin事件的操作的最大字节数,0值代表未知。
OnWorkEnd响应:TWorkEndEvent类。当缓冲区读写操作终止时,该事件关联EndWork方法用于通知Indy组件和类。AWorkMode表示当前操作的模式,其中:wmRead-组件正在读取数据;wmWrite-组件正在发送数据。AWorkCount表示操作的字节数。
在事件响应中,主要通过上述五种事件响应来控制程序。在一般情况下,在OnDisconnected中设定连接断开的界面通知;在OnStatus中设定当前操作的状态;在OnWork中实现传输中状态条和其他参数的显示;而在OnWorkBegin和OnWorkEnd中分别设定开始传输和传输结束时的界面。
(3)连接远程服务器
完成了设定控件属性和实现了控件的事件响应后,就可以与服务器进行交互和传输了。在连接之前,应首先判断IdFtp是否处于连接状态,如果Connected为False,则通过界面控件或其他方式指定与服务器连接相关的一些TCP类属性的设置,分别是:Host(主机名):String、Username(用户名):String、Password(密码):String,也可以指定Port(端口)。之后调用Connect方法连接远程服务器,如果无异常出现则连接成功建立。
过程说明:procedure Connect(AAutoLogin: boolean; const ATimeout: Integer);
该过程连接远程FTP服务器
属性:AAutoLogin: boolean = True
连接后自动登录,该参数默认为True。
- [1] [2] [3] [4] [5] 下一页
-
- 利用Indy的TIdFtp控件实现FTP协议 相关文章:
- ·利用Indy的TIdFtp控件实现FTP协议
- 利用Indy的TIdFtp控件实现FTP协议 相关软件
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:c++类的多态与虚函数的使用
精品推荐
热点TOP10
- ·FTP PASV mode (被动模式) 全过程与设置说明
- ·外网用户如何访问内网FTP服务器
- ·ftp服务器——架设篇
- ·java做的比较完善的FTP连接上传下载文件
- ·流光破解ftp密码教程
- ·个人FTP的制作方法
- ·全程图解 基于XP架设Web和FTP服务器
- ·空间域名常见问题解答:FTP类
- ·教你巧用我的电脑 解决IE7的FTP问题
- ·FTP服务器的攻防实战
- ·FTP服务的LIST指令获取的文件列表信息的解析
- ·内网FTP服务器架设不完全解析
- ·Windows Vista 官方中文正式版(MSDN)32bit和64bit(BT&FTP下载)
- ·打造SSL安全加密的FTP服务器(图)
- ·Ftp的攻击
- ·得到FTP密码之后
- ·wu-ftpd小技巧
- ·ftp使用经典
- ·MS02-018中的FTP拒绝服务漏洞利用程序
- ·FTP口令受到穷举法暴力攻击后的蛛丝马迹
特别推荐
- ·知道FTP用户名和密码,如何修改密码
- ·详解:FTP登陆错误问题完全分析
- ·巧妙设定匿名FTP的安全
- ·让网络工作事半功倍 经典FTP使用命令大全
- ·FTP命令详解
- ·新手学堂:解析FTP协议的两种工作模式
- ·教你巧用我的电脑 解决IE7的FTP问题
- ·网络应用:FTP服务器匿名用户上传文件的配置
- ·FTP服务器的攻防实战
- ·外网用户如何访问内网FTP服务器
- ·ftp服务器——架设篇
- ·FTP PASV mode (被动模式) 全过程与设置说明
- ·教程/操作系统 Win2000中如何让FTP 服务器更安全
- ·巧用DOS命令上传文件
- ·轻松架设Windows 2003用户隔离FTP站点
- ·内网架设FTP服务器不完全攻略
- ·入侵宝典 用SlimFTP将肉鸡改为私人服务器
- ·37个教育网的FTP
- ·为Serv-U提供在线修改密码功能
- ·FTP登录错误详解
