版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录 1绪论 2 1.1研究背景2 1.2主要工作2 2相关知识介绍 2 2.1 FTP 工作原理 2 2.2 FTP工作模式 3 2.3 FTP传输模式4 2.3.1 ASCII 传输方式5 2.3.2 二进制传输方式5 3 FTP客户端的设计 5 3.1设计目的及工具选择 5 3.1.1 设计目的5 3.1.2 设计工具5 3.2客户端主要模块设计 6 3.2.1 客户端连接模块 6 3.2.2 上传模块8 3.2.3下载模块11 4调试与操作说明 15 4.1运行方法15 4.2运行结果15 5课程设计总结 17 参考文献 17 FTP客户端的设计与实现 FTP是In ternet上用来
2、传送文件的协议。它是为了我们能够在In ternet 上互相传送文 件而制定的文件传送标准,规定了In ternet 上文件如何传送。通过 FTP协议,我们就可以跟 In ternet 上的FTP服务器进行文件的上传或下载。本文以实现一个简单易用的FTP客户端为 目标,通过分析 FTP协议的基本工作原理和FTP的数据传输原理,研究如何使用C+工具对 FTP客户端进行设计,选择C+来实现FTP客户端程序的上传下载等主要功能,并用相应软 件提供的一个支持可视化编程的开发环境,从而实现了对FTP客户端的实现。 1绪论 1.1研究背景 FTP是In ternet 上最早也是最广的应用,直到今天它仍是最
3、重要和最基本的应用之 一。用FTP将信息下载到本地是一件十分普遍的事。也随之出现了许多下载软件。尽管远程 登录(Telnet)提供了访问远程文件的极好方法,但怎么也比不上使用自己计算机中的文件 方便。如果用户想使用其它计算机上的文件,最理想的方法就是把它COPY到自己的计算机 中,以便在本地计算机上操作。FTP正是完成这项工作的工具,你可以在任意一个经过文件 传输协议(FTP)访问的公共有效的联机数据库或文档中找到你想要的任何东西。全世界现 在已有1000多个(96年的数据)FTP文件服务器对所有INTERNET用户开使用,用户可以通 过与In ternet相连到远程计算机,把自己需要的文件传
4、输过来或是把自己的收集传输上去 与他人共享。传统的数据库应用系统采用的是客户机/服务器(Client/Server)模式,有高度 的交互性,高效的用户界面等优点 1.2主要工作 通过客户端可以实现文件的上传和下载。其促进文件的共享(计算机程序或数据)、鼓 励间接或者隐式的使用远程计算机、向用户屏蔽不同主机中各种文件存储系统的细节和可靠 和高效的传输数据。 2相关知识介绍 2.1 FTP工作原理 FTP ( File Tran sfer Protocol ),是文件传输协议的简称。用于In ternet 上的控制文 件的双向传输。同时,它也是一个应用程序。用户可以通过它把自己机器与世界各地所有运
5、 FTP协议的服务器相连,访问服务器上的资源和信息。 FTP协议在TCP/IP协议栈中的位置如表 1 : 表1 TCP/IP协议栈 HTTP FTP TELN SMTP DNS TFTP NMP 应用层 TCP UDP 传输层 IP 互联网络层 X25 ISDN LAN WLAN FDDI ATM 网络接口层 当启动FTP从远程计算机拷贝文件时,事实上启动了两个程序:一个本地机器上的FTP 客户端程序,它向FTP服务器提出拷贝文件的请求。另一个是启动在远程计算机的上的FTP 服务器程序,它响应请求把你指定的文件传送到你的计算机中。FTP采用“客户端/服务器” 方式,用户要在自己的本地计算机上安
6、装FT喀户端程序。从根本上说,FTP协议就是在网络 中各种不同的计算机之间按照TCP/IP协议来传输文件。FTP协议采用客户端/服务器 (Client/Sever)模式,由FTP客户端程序和FTP服务器端程序组成。使用时,先启动FTP客户 端程序与远程主机建立连接,然后向远程主机发出传输命令,远程主机在收到命令后就给予 响应,并执行正确的命令。但是FTP有一个根本的限制,那就是,如果用户在某个主机上没 有注册获得授权,即没有用户名和口令,就不能与该主机进行文件传输。但匿名FTP服务器 除外,它能够使用户与远程主机建立连接并以匿名身份从远程主机上拷贝文件,而不必是该 远程主机的注册用户。用户使用
7、特殊的用户名“AnonymouS或“ guest ”就可有限制地访问 远程主机上公开的文件。现在许多系统要求用户将Emai1地址作为口令,以便更好地对访问 者进行跟综。出于安全的目的,大部分匿名FTP主机一般只允许远程用户下载文件,而不允 许上载文件。也就是说,用户只能从匿名FTP主机拷贝其需要的文件而不能把文件拷贝到匿 名FTP主机。另外,匿名FTP主机还采用了其他一些保护措施以保护自己的文件不至于被用户 修改和删除,并防止计算机病毒的侵入。匿名FTP-直是In ternet上获取信息资源的最主要 方式,在In ternet成千上万的匿名FTP主机中存储着无以计数的文件,这些文件包含了各种
8、各样的信息、数据和软件。人们只要知道特定信息资源的主机地址,就可以用匿名FTP登陆。 2.2 FTP工作模式 FTP采用C/S (客户端/服务器)模式进行通信,但与其他的C/S模式网络通信协议又 有一个很大的区别。通常在进行HTTP通信或是TELNET通信的时候,只需要一个端口进行 通信。 即客户端只需要连接一个端口进行数据通信。如TELNET的默认端口是23,用户从头到 尾都只需使用这个端口。但是 FTP通信除了有一个默认端口 21之外,还需要其他的端口。 其中默认端口( 21)主要进行控制连接, 进行命令协议和服务器端的响应码的传输;另外一 个非标准端口主要进行数据传递,如文件的上载、下载
9、等。至于非标准端口的产生则要根据 用户选择的连接模式而定:如果客户选择的是主动模式( PORT,则需要用户端提供给服务 器一个IP地址和一个非标准端口;而如果用户采用被动模式( PASV,则服务器端需要提 供给客户端一个IP地址和一个非标准端口。下表是几个著名的TCP端口号: 表2 TCP端口号 TCP端口号 关键字 描述 20 FTP-DATA 文件传输协议数据 21 FTP 文件传输协议控制 23 TELENET 远程登录协议 25 SMTP 简单邮件传输协议 53 DOMAIN 域名服务器 80 HTTP 超文本传输协议 110 POP3 邮局协议 119 NNTP 新闻传送协议 FTP
10、中字节大小有两个: 逻辑字节大小和用于传输的字节大小。 后者通常是8位,而前 者可不一定是多少了。 传输字节不必等于逻辑字节大小,也不必对数据结构进行解释。控制 连接是建立在USER-PIT和SERVER-PI之间用于交换命令与应答的通信链路。数据连接是传 输数据的全双工连接,传输数据可以发生在服务器DTP和用户DTP之间也可以发生在两个服 务器DTP之间,FTP可以传输非连续的文件,这些文件的一部分称为页。服务器DTP代表一 种传输过程,它通常处于“主动”状态,它和侦听端口建立数据连接,它还可以为传输和存 储设置参数,并根据PI的指令传输数据。当然,DTP也可以转入“被动”状态。服务器 FT
11、P 进程,它是和用户FTP进程一起工作的,它由 PI和DTP组成。在开始阶段,标准 FTP命令 由用户PI产生并通过控制连接传送到服务器进程。服务器PI向用户PI返回标准应答。FTP 命令指定数据连接参数和文件系统操作。用户DTP在特定数据端口侦听, 服务器开始数据连 接并以指定的参数开始数据传输。数据端口不必在开始FTP命令的机器上,但用户或用户FTP 进程必须确定它在指定的数据端口上侦听这个数据连接是全双工的。 2.3 FTP传输模式 FTP协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的 位置、联接的方式、甚至是是否使用相同的操作系统无关。假设两台计算机通过ftp
12、协议对 话,并且能访问In ternet ,你可以用ftp命令来传输文件。每种操作系统使用上有某一些 细微差别,但是每种协议基本的命令结构是相同的。FTP的传输有两种方式:ASCII传输模式 和二进制数据传输模式。 2.3.1 ASCII传输方式 假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX, 当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文 本文件的格式。但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可 能是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中 也包含有指示页尺
13、寸,字库等信息的非打印字符)。在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝,不要对这些文件进行处理。 232二进制传输方式 在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地 机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到 Windows系统,在对方系统上,此文件不能执行。如果你在ASCII方式下传输二进制文件,即 使不需要也仍会转译。这会使传输稍微变慢,也会损坏数据,使文件变得不能用。 3 FTP客户端的设计 3.1设计目的及工具选择 3.1.1设计目的 FTP早已应用在网络的各个方面,比如我们在访问网络上
14、的资源时,经常会遇到需要 连接FTP服务器来下载,或者你制作了一个网站,想要将其上传至服务器,让大家能够访问 它,这个时候就会用到 FTP客户端。 虽然平时使用windows自带的IE浏览器即可实现对FTP服务器的访问,但是IE只是个 很粗糙的FTP客户端。IE浏览器在6.0以下的版本不支持 PASV方式访问服务器,而且IE 浏览器在登录FTP服务器的时候,无法查看返回的信息,在出错的时候,无法找到错误的原 因,因此在使用上很不方便。 现在大多数的FTP客户端软件都是收费版的,而且以英文版居多,使用上操作很复杂, 目前流行的有CoreFtp、AceFtp、Ftp Voyager等,但是大多数用
15、户并不习惯使用这些 软件。 本文所设计的FTP客户端则适合大多数用户使用,界面设计的很简单,使用户可以一目 了然,而且具备FTP客户端的基本功能,可以作为下载、上传文件的工具来使用。 3.1.2设计工具 程序设计中用到的主要工具就是VC+6.0开发平台,EasyFZS FTP服务器 3.2客户端主要模块设计 3.2.1客户端连接模块 运行客户端后,首先是连接服务器,需要输入服务器IP地址,用户名和密码,然后点 击查询,观察是否连接成功,若成功则显示远程文件的列表。 若连接失败,则抛出异常,弹出对话框显示出错误,可知如何修改,然后重新输入服务 器IP地址或用户名或密码,直到连接上服务器。下图为客
16、户端连接流程图: 用户输入服务器地址 及用户名和密码 在显示目录文件列 表显示文件 进行错误处理 图3-1客户端连接流程图 主要代码: 在Onln itDialog()函数中添加成员变量的初始化代码,对服务器名、登录用户名和登录口令 的控件变量赋初值: BOOL CFTP14Dlg:O nlni tDialog() /retur n TRUE uni ess you set the focus to a con trol /前面是MFC应用程序向导和类向导自动生成的代码 m_strFtp=_T(); /初始化服务器域名 m_strName=_T(); /初始化登录用户名 m_strPwd=_T
17、(); /初始化登录口令 UpdateData(FALSE); /更新界面 / TODO: Add extra in itializatio n here return TRUE; 当用户点击查询按钮,执行此函数 void CFTP14Dlg:O nQuery() Clntern etSessi on* pSessi on; / CFtpC onnection* pConnection; / CFtpFileFi nd* pFileFi nd;/ CStri ng strFileName; On Query (),代码如下: 定义会话对象指针变量 定义连接对象指针变量 定义文件查询对象指针变量
18、 BOOL bContin ue; pConn ectio n=N ULL;/ 初始化 pFileFi nd=NULL; UpdateData(TRUE); / 获得用户的当前输入(服务器名,用户名和口令) while(mistFile.GetCou nt()!=O) mistFile.DeleteStri ng(0); / 清除列表框 的内容 pSessi on=new Cln ternetSessi on(/ 创建In ternet会话类对象 AfxGetAppName(),1,PRE_CONFIG_INTERNET_ACCESS); try /试图建立与指定FTP服务器的连接 pConn
19、ection= pSessio n-GetFtpC onn ectio n(m_strFtp,m_strName,m_strPwd); catch (Clntern etExcepti on* e) e-Delete();/ 无法建立连接,进行错误处理 pCo nn ectio n=N ULL; if (pCo nn ectio n!=NULL) /创建CFtpFileFind对象,向构造函数传递CFtpConnection对象的指针 查找服务器上当前目录的任意文件 pFileF ind=new CFtpFileFi nd(pC onn ectio n); bCon ti nu e=pFile
20、Fi nd-Fi ndFile(*); / pFileFi nd-Close(); if (!bCo ntin ue) / 如果一个文件都找不到,结束查找 pFileFi nd=NULL; while (bC on ti nue) /找到了第一个文件,继续找其它的文件 strFileName=pFileFi nd-GetFileName(); /获得找到的文件的文件名 /如果找到的是否目录,将目录名放在括弧中 if (pFileFind-IsDirectory() strFileName=+strFileName+; /将找到的文件或目录名显示在列表框中。 查找下一个文件 m_l istFil
21、e.AddStri ng(strFileName); bCo nti nue=pFileFi nd-Fi ndNextFile(); / if (pFileFi nd!=NULL) pFileFi nd-Close(); / pFileFi nd=NULL; delete pFileFi nd;/ if (pCo nn ectio n!=NULL) pConnection-Close(); delete pConnection; / delete pSessi on;/ 结束查询 删除文件查询对象 删除FTP连接对象 删除In ternet会话对象 3.2.2上传模块 用户在连接上服务器后,
22、可以在本地列表中选择需要上传的文件,并指定上传位置, 本机上的文件上传至 FTP服务器。 不能选择文件夹,只能选择文件。若上传失败,则抛出异常;如果成功上传,则提示上 传成功。 图为上传子模块流程图: 图3-2上传模块流程图 上传模块的主要代码为: void CFTP14Dlg:O nU pload() /获得当前输入 UpdateData(TRUE); /禁用用于输入的文本框控件 服务器域名输入文本框 登录客户名输入文本框 口令输入文本框 m_editFtp.E nableWi ndow(FALSE);/ m_editName.E nableWi ndow(FALSE);/ m_editPw
23、d.E nableWi ndow(FALSE);/ m_staFtp.E nableWi ndow(FALSE); m_staName.E nableWi ndow(FALSE); m_staPwd.E nableWi ndow(FALSE); /禁用查询按钮 m_bt nQuery.E nableWi ndow(FALSE); CStri ng strSourceName; CStri ng strDestName; CFileDialog dlg(TRUE,*.*);/定义文本对话框对象变量 if (dlg.DoModal()=IDOK) /获得待上传的本地机文件路径和文件名 strSou
24、rceName=dlg.GetPathName(); strDestName=dlg.GetFileName(); /调用Upload函数上传文件 if (Upload (strSourceName,strDestName) AfxMessageBox(上传成功! ”,MB_OK|MB_ICONINFORMATION); else AfxMessageBox(上传失败! ”,MB_OK|MB_ICONSTOP); else /文件选择有错误 AfxMessageBox(请选择文件! ”,MB_OK|MB_ICONSTOP); /激活查询按钮 m_bt nQuery.E nableWi ndow
25、(TRUE); /激活用于输入的文本框控件 m_editFtp.E nableWi ndow(TRUE); m_editName.E nableWi ndow(TRUE); m_editPwd.E nableWi ndow(TRUE); m_staFtp.E nableWi ndow(TRUE); m_staName.E nableWi ndow(TRUE); m_staPwd.E nableWi ndow(TRUE); BOOL CFTP14Dlg:Upload(CStri ng strSName, CStri ng strDName) Clntern etSessi on* pSessi
26、on; CFtpC onnection* pConnection; pCo nn ectio n=N ULL; /创建In ternet 会话 pSessi on=new Clntern etSessi on(AfxGetAppName(), 1, PRE_CONFIG_INTERNET_ACCESS); try /建立FTP连接 pConnection=pSessi on-GetFtpC onn ecti on( m_strFtp, m_strName, m_strPwd); catch (Clntern etExcepti on* e) /错误处理 e-Delete(); pCo nn e
27、ctio n=N ULL; return FALSE; if (pCo nn ectio n!=NULL) /上传文件 if (!pCo nn ectio n-PutFile(strSName,strDName) /上传文件错误 pConnection-Close(); delete pConn ecti on; delete pSessi on; return FALSE; /清除对象 if (pCo nn ectio n!=NULL) pConnection-Close(); delete pConnection; delete pSessi on; return TRUE; 323下载模
28、块 当用户在服务器文件列表中选择想要下载的文件后,选择需要下载文件在本机上的存 储位置,设置上传模式为被动模式;将服务器上的文件下载至本机,如果成功下载,则提 示下载成功,若失败则抛出异常,此过程可连续进行直到想退出。 下图为下载子模块流程图: 图3-2下载模块流程图 下载模块的主要代码: void CFTP14Dlg:O nDow nload() /获得当前输入 UpdateData(TRUE); int n Sel=mistFile.GetCurSel(); CStri ng strSourceName; /获得用户在列表框中的选择 n Sel=mi_l istFile.GetCurSel
29、(); m_l istFile.GetText( nSel,strSourceName); if (strSourceName.GetAt(0)!=T ) / 选择的是文件 CStri ng strDestName; CFileDialog dlg(FALSE,*.*); /定义了一个文件对话框对象变量 if (dlg.DoModal()=IDOK) /激活文件对话框 /获得下载文件在本地机上存储的路径和名称 strDestName=dlg.GetPathName(); /调用函数下载文件 if (Download (strSourceName,strDestName) AfxMessageB
30、ox(下载成功! ”,MB_OK|MB_ICONINFORMATION); else AfxMessageBox(下载失败! ”,MB_OK|MB_ICONSTOP); else AfxMessageBox(请写入文件名!”,MB_OK|MB_ICONSTOP); else /选择的是目录 AfxMessageBox(不能下载目录!n 请重选!,MB_OK|MB_ICONSTOP); /禁用下载按钮 m_b tn Dow nl oad.E nableWi ndow(FALSE); /激活查询和上传按钮 m_b tn Upload.E nableWi ndow(TRUE); m_bt nQuer
31、y.E nableWi ndow(TRUE); /激活用来输入的文本和编辑框控件 m_editFtp.E nableWi ndow(TRUE); m_editName.E nableWi ndow(TRUE); m_editPwd.E nableWi ndow(TRUE); m_staFtp.E nableWi ndow(TRUE); m_staName.E nableWi ndow(TRUE); m_staPwd.E nableWi ndow(TRUE); BOOL CFTP14Dlg:Dow nload(CStri ng strSName, CStri ng strDName) CI nt
32、ernetSessio n* pSessio n;/定义会话对象变量指针 CFtpCo nn ectio n* pCo nn ectio n; /定义连接对象变量指针 pCo nn ectio n=N ULL; /创建In ternet 会话对象 pSessi on=new Clntern etSessi on( AfxGetAppName(), 1, PRE_CONFIG_INTERNET_ACCESS); try /建立FTP连接 pConnection=pSessi on-GetFtpC onn ecti on( m_strFtp, m_strName, m_strPwd); catch (Clntern etExcepti on* e) /错误处理 e-Delete(); pCo nn ectio n=N ULL; return FALSE; if (pCo nn ectio n!=NULL) /下载文件 if (!pCo nn ectio n-GetFile(strSName,strDName) /下载文件错误
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川省引大济岷水资源开发有限公司公开遴选工作人员考试备考题库及答案解析
- 2026年武汉经开区教育系统校园专项招聘教师50人笔试备考试题及答案解析
- 2026年济宁市直教育系统急需紧缺人才招聘(52名)考试参考题库及答案解析
- 2026江西吉安市吉水县城控人力资源服务有限公司招聘劳务外包1人(一)考试参考题库及答案解析
- 2026中国联通招聘博士后工作站校园招聘(福建有岗)考试参考题库及答案解析
- 资阳市雁江区区属国有企业招聘(15人)考试备考试题及答案解析
- 2025黑龙江交通职业技术学院“黑龙江人才周”招聘38人考试备考题库及答案解析
- 2026上海虹口红树林志愿服务分队招募考试参考试题及答案解析
- 2026年金华武义县中心血库招聘编外卫技人员1人考试备考题库及答案解析
- 2026内蒙古赤峰市宁城县八里罕中学招聘公益性岗位人员1人考试参考试题及答案解析
- GB/T 2091-2008工业磷酸
- GB/T 12234-2019石油、天然气工业用螺柱连接阀盖的钢制闸阀
- GA/T 947.4-2015单警执法视音频记录系统第4部分:数据接口
- 手卫生规范-课件
- 隐身技术概述课件
- 主题班会PPt-敬畏规则
- (卓越绩效)质量奖申报材料
- 乐业弯里金矿采矿权评价报告广西壮族自治区国土资源厅
- 因私出国(境)申请(备案)表
- DB50-T 867.29-2022 安全生产技术规范 第29部分:有色金属压力加工企业
- 危重病人抢救配合PPT课件(PPT 29页)
评论
0/150
提交评论