FTP编程与资源访问.ppt
《FTP编程与资源访问.ppt》由会员分享,可在线阅读,更多相关《FTP编程与资源访问.ppt(70页珍藏版)》请在三一办公上搜索。
1、第6章 FTP编程与资源访问,FTP应用基础,制作FTP上传下载器,FTP服务器的实现,自制FTP客户端与服务器对接,6.1 FTP应用基础,6.1.1 FTP简介与大多数Internet应用一样,FTP也是基于客户端服务器(C/S)模式工作的,如图6.1所示。,6.1.2 FTP的特性,1适应异构系统FTP可以使用的文件类型有以下四种。(1)ASCII码文件。这是FTP默认的文本文件格式,数据在传输过程中使用与Telnet相同的NVT ASCII码。(2)EBCDIC码文件。它也是一种文本类型文件,只是利用8位代码表示一个字符,该文本文件在传输时要求两端都使用EBCDIC码。(3)图像(Im
2、age)文件。图像文件也称为二进制文件类型,发送的数据为连续的比特流,实际传输时,发送方将数据打包成为8位,然后以字节为单位进行传输。(4)本地(local)文件。字节的大小由本地主机定义,即每一字节的比特数由发送方规定,用于在具有不同字节大小的主机间传输二进制文件。,6.1.2 FTP的特性,FTP支持的文件数据结构有如下几种结构。(1)文件结构。这是FTP默认的方式,文件被认为是一个连续的字节流,不存在内部的结构。(2)记录结构。只适用于文本文件(ASCII或EBCDIC),是由连续的记录构成的。(3)页结构。当文件是由非连续的多个部分组成时,使用页结构,这种文件称为随机访问文件。每页都带
3、有页号发送,以便接收方能够随机地存储各页。,6.1.2 FTP的特性,2匿名FTP通常,使用FTP时必须首先登录,输入用户名和密码,从远程主机获得相应的权限后,方可下载或上传文件。但这违背了Internet的开放性,匿名FTP就是为解决这个问题而产生的一种机制:用户可通过它连接到远程主机并下载文件,而无须成为其注册用户。系统管理员建立一个特殊的用户名anonymous,Internet上的任何人在任何地方都可使用该用户名。,6.1.3 FTP工作原理,下面以客户要从FTP服务器上下载一个文件为例,说明FTP的完整工作过程。其工作原理如图6.2所示。,6.1.3 FTP工作原理,1启动FTP用户
4、通过GUI界面操作客户端软件,执行启动FTP的用户交互式命令。2建立控制连接客户端TCP层根据用户命令中给出的服务器IP地址,向服务器提供FTP服务的21端口发出主动建立连接的请求。服务器收到请求后,通过三次握手,在进行FTP命令处理的用户协议解释器进程和服务器协议解释器进程之间建立一条TCP连接,6.1.3 FTP工作原理,3建立数据连接和进行文件传输(1)在客户端请求分配一个临时的TCP端口号。(2)在客户端由客户协议解释器通过控制连接,向服务器协议解释器发送两条命令:一条命令(使用PORT命令)是将客户端的IP地址和申请到的临时端口号这两个参数,告诉给服务器协议解释器;另一条命令是将服务
5、器上某文件传输到客户端的服务请求。(3)服务器协议解释器收到客户端的IP地址和临时端口号后,以该IP地址和端口号为目标,使用服务器的20端口(TCP层用于传输数据的端口)向客户发出主动建立连接的请求。(4)客户收到请求后,通过三次握手,在客户数据传输进程和服务器数据传输进程之间建立一条TCP连接,下面的传输文件就通过这个连接进行,由于它的建立是专用于传输数据的,所以将它称为数据连接。(5)服务器的数据传输进程从它的文件系统中找到客户进程请求传输的文件。(6)服务器的数据传输进程通过数据连接将该文件发送到用户数据传输进程。(7)用户数据传输进程将该文件交给客户端文件系统进行存储。(8)文件传输完
6、成后,由服务器主动关闭该数据连接。,6.1.3 FTP工作原理,4关闭FTP除了本例中介绍的客户从FTP服务器下载一个文件时要建立数据连接外,当客户要向服务器上传一个文件或客户要求查看服务器文件列表时,也要建立相应的数据连接。因此,在下列三种情况下都需要在客户和服务器之间自动建立数据连接。从客户向服务器发送一个文件。从服务器向客户发送一个文件。从服务器向客户发送文件目录列表。,6.1.3 FTP工作原理,其实客户端可以不对服务器通知数据连接的端口,在这种情况下,服务器同样可以与客户端建立一条数据连接,只不过在客户端,数据连接就使用与控制连接相同的端口号。这时,控制连接和数据连接可以分别表示如下
7、。控制连接:数据连接:,6.1.4 FTP命令和应答,1FTP命令FTP命令都是由三个或四个大写ASCII码字符组成的,表6.1列出了FTP命令,共分为三大类。2FTP应答(1)服务器为了对数据传输的请求和过程进行同步,这是TCP所要求的,TCP要求对接收到的数据都要进行确认。(2)为了使用户了解服务器的状态,用户可以根据收到的状态信息对服务器是否正常执行了有关操作进行判断。,6.1.4 FTP命令和应答,三位数字每位都有特定的意义,详细内容见表6.2。,6.1.5 FTP网络环境搭建和使用,1安装FTP服务组件FTP服务组件不是Windows操作系统默认安装的,当需要使用时要由用户补装添加这
8、个组件。选择菜单命令“开始”“控制面板”,双击“添加或删除程序”项,在弹出的对话框左侧单击“添加/删除Windows组件”选项,如图6.3所示。,6.1.5 FTP网络环境搭建和使用,在弹出的“Windows组件向导”对话框中勾选“Internet 信息服务”复选框,单击“详细信息”按钮,如图6.4所示。,6.1.5 FTP网络环境搭建和使用,在弹出的“Internet信息服务(IIS)”对话框中找到“文件传输协议(FTP)服务”项并勾选。然后连续单击“确定”按钮,直至回到如图6.5所示的界面。,6.1.5 FTP网络环境搭建和使用,找到安装操作系统时使用的Windows系统安装盘,放入光驱后
9、单击“确定”按钮,如图6.6所示,系统将自动启动安装过程。,6.1.5 FTP网络环境搭建和使用,2配置FTP站点选择菜单命令“开始”“控制面板”“性能和维护”“管理工具”“Internet信息服务”,打开如图6.7所示的“Internet 信息服务”窗口。,6.1.5 FTP网络环境搭建和使用,为了以后测试FTP程序向服务器上传(删除)文件等“写入”类功能,必须同时开放FTP服务器的读和写权限,右击“默认FTP站点”“属性”,在如图6.8所示的“默认 FTP 站点 属性”对话框中选择“主目录”选项卡。,6.1.5 FTP网络环境搭建和使用,最后,将FTP站点的“写入”权限也一并开放,操作如图
10、6.9所示。,6.1.5 FTP网络环境搭建和使用,3测试FTP站点FlashFXP是一款功能强大的FTP客户端软件,拥有庞大的用户群和丰富的种子资源,其主界面如图6.10所示。,6.1.5 FTP网络环境搭建和使用,选择菜单命令“会话”“快速连接”,在如图6.11所示的“快速连接”对话框的“地址或URL”栏中输入“127.0.0.1”(本地计算机环回测试地址),端口保持默认“21”,匿名登录,单击“连接”按钮。,6.1.5 FTP网络环境搭建和使用,右击本地目录下的文档“我的简历.doc”“传输”,如图6.12所示,文件被上传到FTP根目录下。,6.2 制作FTP上传下载器,6.2.1 Wi
11、nInet类对FTP的支持FTP客户端编程也是主要以MFC WinInet为支撑的。WinInet提供了如图6.13所示的Internet会话类CInternetSession、连接类CInternetConnection、文件类CInternetFile、文件操作类CFileFind,以及通用异常类CInternetException等。,6.2.2 设计软件界面,工程创建好后,设计软件界面如图6.14所示。,6.2.2 设计软件界面,与界面各元素关联的变量见表6.3。,6.2.3 编程实现,为了能在编程中使用WinInet类的功能,需要在SelfFtpUpDownloaderDlg.h中包
12、含头文件:#include afxinet.h勾选“匿名”复选框将触发OnNoname方法,代码所示。,6.2.3 编程实现,“连接”按钮的事件过程,代码如下:void CSelfFtpUpDownloaderDlg:OnConnect()this-ConnectFtp();/连接FTP服务器this-UpdateDir();/显示服务器上的目录和文件夹列表/以下为界面控制ServerIP.EnableWindow(false);m_port.EnableWindow(false);m_connect.EnableWindow(false);m_disconnect.EnableWindow(
13、true);m_enterdir.EnableWindow(true);m_upload.EnableWindow(true);m_download.EnableWindow(true);m_delete.EnableWindow(true);m_noname.EnableWindow(false);m_exit.EnableWindow(false);,6.2.3 编程实现,这个事件过程用到两个函数:ConnectFtp()和UpdateDir()。ConnectFtp()函数代码。FTP客户程序要建立与服务器的连接,需要一个CInternetSession和CFtpConnection 对
14、象,但并不需要直接创建CFtpConnection对象,而是通过调用CInternetSession:GetFtpConnection实现。UpdateDir()函数代码。,6.2.3 编程实现,为保证连接的顺利成功,需要在SelfFtpUpDownloaderDlg.h的对话框类定义中添加CInternetSession类对象指针pInternetSession和CFtpConnection对象指针pFtpConnection的定义,还要定义指示连接成功与否的变量bconnect,另外声明上述两个函数的原型:BOOL bconnect;CInternetSession*pInternetSe
15、ssion;CFtpConnection*pFtpConnection;void ConnectFtp();void UpdateDir();,6.2.3 编程实现,“进入”按钮使得用户可以进入自己选中的目录文件夹,其事件代码如下:void CSelfFtpUpDownloaderDlg:OnEnterDir()CString selfile;m_lst.GetText(m_lst.GetCurSel(),selfile);/获取用户选择的目录名if(!selfile.IsEmpty()pInternetSession-Close();/及时关闭废弃的会话句柄this-ConnectFtp()
16、;/重新连接,保持与服务器的持续会话CString strdir;pFtpConnection-GetCurrentDirectory(strdir);/获得原来的工作目录strdir+=selfile;/生成新目录pFtpConnection-SetCurrentDirectory(strdir);/改变目录到当前服务目录this-UpdateDir();/更新目录列表m_goback.EnableWindow(true);,6.2.3 编程实现,为使用户灵活地切换目录,程序必须提供目录返回功能,使用户能够返回上一级目录,“返回”按钮的事件过程代码如下:void CSelfFtpUpDown
17、loaderDlg:OnGoBack()CString strdir;pFtpConnection-GetCurrentDirectory(strdir);int pos;pos=strdir.ReverseFind(/);/用字符串截取的方式获得上级目录strdir=strdir.Left(pos);pInternetSession-Close();/关闭废弃的会话this-ConnectFtp();/重新连接,保持持续会话pFtpConnection-SetCurrentDirectory(strdir);this-UpdateDir();/更新目录列表,6.2.3 编程实现,本例实现了用
18、户对FTP资源的上传、下载和删除这三项最基本的操作。“上传”按钮的事件过程代码。“下载”按钮的事件过程代码。“删除”按钮的事件过程代码。,6.2.3 编程实现,当用户访问完毕,单击“断开”按钮退出登录,其事件过程代码如下:void CSelfFtpUpDownloaderDlg:OnDisconnect()pInternetSession-Close();/结束会话m_lst.ResetContent();m_lst.AddString(连接已断开!);/界面控制ServerIP.EnableWindow(true);m_port.EnableWindow(true);m_connect.En
19、ableWindow(true);m_disconnect.EnableWindow(false);m_enterdir.EnableWindow(false);m_goback.EnableWindow(false);m_upload.EnableWindow(false);m_download.EnableWindow(false);m_delete.EnableWindow(false);m_noname.EnableWindow(true);m_exit.EnableWindow(true);,6.2.3 编程实现,为了使整个程序功能完善,在客户端刚启动,用户尚未登录时,也需要进行一些
20、初始化工作,告诉用户“目前尚未登录!”,初始化代码如下:bconnect=false;m_lst.ResetContent();m_lst.AddString(尚未连接服务器,无法浏览FTP资源!);m_connect.EnableWindow(false);m_disconnect.EnableWindow(false);m_enterdir.EnableWindow(false);m_goback.EnableWindow(false);m_upload.EnableWindow(false);m_download.EnableWindow(false);m_delete.EnableWi
21、ndow(false);,6.2.4 测试FTP客户端,将之前已经上传到C:Inetpubftproot下的Word文档删除,启动FTP上传下载器SelfFtpUpDownloader,如图6.15所示在IP地址栏中输入“127.0.0.1”,端口号填21,勾选“匿名”复选框,单击“连接”按钮访问本机上的FTP服务器。,6.2.4 测试FTP客户端,单击“上传”按钮,弹出“打开”对话框,进入如图6.16所示的“我的文档”目录,选中“我的简历.doc”文档,单击“打开”按钮。,6.2.4 测试FTP客户端,文件上传到服务器,显示“上传成功!”消息框,如图6.17所示。,6.3 FTP服务器的实现
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FTP 编程 资源 访问

链接地址:https://www.31ppt.com/p-6506041.html