




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于Winsock的FTP客户端的实现目录一、 课程设计基本要求2l 课程设计目的2l 课程设计任务3l 课程设计要求3二、 程序简介3l 开发环境3l 程序界面4三、 原理概述5l FTP协议5l 应用WinSock实现网络通信6四、 主要数据结构7五、 CFTPClient类8l 控制连接的实现9l 数据连接的实现11六、 体会141、 课程设计基本要求l 课程设计目的1 加深对 TCP/IP协议的理解。 2 了解 FTP协议的工作原理。 3 掌握用 MFC编写FTP协议的实现程序。 l 课程设计任务在 Visual C+6.0的环境下实现 FTP下载工具。l 课程设计要求1 了解 FTP
2、协议的工作原理。(RFC765 , RFC2228, RFC2640, RFC2773) 2 主要是基于 TCP/IP的 Winsock编程,用 Visual C+6.0实现一个基于 FTP协议的 FTP下载工具(客户端)。 2、 程序简介l 开发环境 操作系统:Microsoft Windows XP pro编译环境:Microsoft Visual C+ 6.0:PM-1.7GHz内存:768MB硬盘:40MB分辨率:32bit 1024×768l 程序界面3、 原理概述l FTP协议FTP是 Internet上基于TCP/IP协议传输文件的应用层协议。FTP规定了数据包的格式、
3、 数据包头部结构和命令结构等等。FTP应用命令行方式传输文件。FTP在 RFC959中定义。FTP应用 TCP传输而不是 UDP。由 FTP提供的文件传输是将一个完整的文件从一个系统复制到另一个系统中。应用 FTP首先需要登录 FTP服务器 ,或者通过允许匿名FTP来使用 FTP服务器。FTP最早的设计是用于两台不同的主机即不同的操作系统下 ,不同的文件结构 ,不同的字符集。FTP是建立两个 TCP连接 (见图) ,一个用于传输数据 ,另一个用于传输命令。每个 FTP主机都有一个“ 协议解析器 ” ( Pr ot oco1 I nter p reter, PI )模块,负责解释并执行 FTP命
4、令和响应。同时 ,每个 FTP主机还有一个“FTP数据传送 ” ( FTPData Transfer,D T)模块 ,负责处理数据。FTP通过执行“Telnet” (虚拟终端 )模块或通过完全重新实施 Telnet作为“ 协议解析器 ”。FTP命令以纯文本形式发送 ,其响应同样也是纯文本形式 ,并在三位数字后跟某些文本。这些数字可由软件用来确定下面要采取的步骤。而文本则供用户阅读。每一个命令都会产生一个或多个响应。l 应用WinSock实现网络通信WinSock是Microsoft等公司联合开发的网络编程接口, 其实是一种进程间相互通信的机制,并将这种进程间通信从单机环境扩展到网络环境, 适合
5、于开发主机/客户机通信程序。 网络通信包括两台主机或者两个进程通过网络传递数据, 网络的每一端称为一个端点, 而WinSock为网络端点的抽象表示。当用其编程时,程序在网络对话的每端都需要一个 Socket,两个Socket之间可以应用面向连接的或者是无连接的网络协议。面向连接的协议通过互换确认信息在连接端口之间建立一条虚电路,它不必关心网络软件传送数据。因而面向连接的客户程序不必指定本地协议端口, 而只需为Socket提供远程主机信息;IP地址和协议端口,WinSock可自动保存本地IP地址和选择本地端口。面向连接的WinSock客户机/服务器模型,服务器在没有请求到达时,它处于等待状态。
6、一旦请求到来,服务器立即产生一个子进程,然后回到等待状态,由子进程相应请求。当下一个请求到达时,服务器再产生一个新进程。其中,并发服务器成为主服务器,子进程称为从服务器。这种主从服务器的方式巧妙地解决了并发请求问题。4、 主要数据结构CSFTPApp类CWinApp类的派生类,由编译器自动生成,该对象代表了应用进程的主线程。CMainFrame类CFrameWnd类的派生类,由编译器自动生成,用于创建应用程序的主窗口,它能很好地支持系统菜单和控制条(工具条、状态条等)。在编写文档/视图结构的应用程序时,它作为主窗口管理视图和文档对象。CSFTPDoc类CDocument类的派生类,由编译器自动
7、生成,它只是提供了一个框架,为文档对象与相关的其他对象(视图、应用程序对象及框架窗口等)进行交互提供了框架。对CSFTPDoc类的设计工作,基本上都是在这个已有框架的基础上,添加所需要的功能代码。 CDFTPView类CListView类的派生类,同样由编译器自动生成,在本程序中用于显示FTP服务器上的文件列表。CAboutDlg类CDialog类的派生类,由编译器自动生成,用于显示帮助信息。CMessageDlg类CDialog类的派生类,用于显示从FTP服务器发来的响应信息。CListItem类用来解析FTP服务器发送过来的文件列表信息,将每个文件的类型、名称、大小、创建时间和访问权限分别
8、提取出来。CFTPClient类这是实现FTP协议的主要部分,也是本文档要着重解释的一个类。5、 CFTPClient类l 控制连接的实现FTP客户端与服务器端建立连接的流程为1. 创建一个套接字,并且与服务器建立连接。2. 创建CArchive对象、CSocketFile对象和CSocket对象之间的关联。3. 用于控制的数据流连接已经建立,可以发送命令与接收响应。4. 依次发送USER和PASS命令成功登录服务器。MFC中提供了一个网络编程模式,可以充分利用CSocket的特性。该模式的基础是CSocketFile类。使用方法如下:首先,构造一个CSocket对象;调用Create函数创建
9、一个socket对象(SOCK_STREAM类型)。接着,如果是客户程序,调用Connect连接到远地主机;如果是服务器程序,先调用Listen监听socket端口,收到连接请求后调用Accept接收请求。然后,创建一个和CSocket对象关联的CSocketFile对象,创建一个和CSocketFile对象关联的CArchive对象,指定CArchive对象是用于读或者写。如果既要读又要写,则创建两个CArchive对象。创建工作完成之后,使用CArchive对象在客户和服务器之间传送数据。使用完毕,销毁CArchive对象、CSocketFile对象、CSocket对象。BOOL Conn
10、ectServer(CString serverhost,int serverport);首先创建一个套接字与服务器建立连接。(代码如下图)然后建立CArchive对象(m_pCtrlOutarch和m_pCtrlInarch)、CSocketFile对象(m_pCtrlsokfile)和CSocket对象(m_Ctrlsok)之间的关联,用于发送和接收数据。(代码如下图)BOOL FTPcommand(CString command);BOOL WriteStr(CString outputstring);int ReadStr();后两个方法WriteStr和ReadStr利用已经在Con
11、nectServer()中初始化的两个CArchive对象提供的方法向服务器发送和接受数据,而FTPcommand(CString command)则是调用这两个函数实现发送命令和接收响应的功能。(代码如下图)值得一提的是m_fc表示响应代码的第一位。在FTP协议中,对响应代码有着详细的规定,1yz表示预备状态,2yz表示完成状态,3yz表示中间状态,4yz表示暂时拒绝状态,5yz表示永久拒绝状态。例如:150 File status okay; about to open data connection. (文件状态OK,将打开数据连接)200 Command okay. (命令OK)331
12、 User name okay, need password. (用户名OK,需要密码)425 Can't open data connection. (不能打开数据连接)501 Syntax error in parameters or arguments. (参数语法错误)故m_fc可用于判断操作是否成功。BOOL Logon(CString hostname,int hostport,CString username, CString password);登录FTP服务器的函数,(主要代码如下)。l 数据连接的实现BOOL DownloadFile(CString remotefile, CString localfile,BOOL get);数据传输由本函数实现流程图如下:BOOL List();本函数用于接收由数据通道发来的文件列表信息,基本流程与Downloa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年GSM和CDMA制移动通信检测设备合作协议书
- 逻辑思维的培养-小学数学题型解析
- 通过真实案例教导孩子明辨是非
- 金融机构的密码管理标准与执行实践
- 高速公路工程安全风险评估及防范
- 职场中的时间分配与效率提升策略
- 运动器材市场的客户画像与产品定位
- 高新农业技术的市场竞争分析与进路探索
- 2025年柱上式无功补偿装置项目合作计划书
- 职场故事中的家族力量
- 建筑工程质量管理试题及答案
- 2025年陕西省高三高考三模历史试卷(含答案详解)
- 糖尿病老人护理讲课课件
- 美发技能鉴定考试模拟题与参考答案解析
- 2025沪教牛津版七年级英语下册全册培优讲义
- 书香校园读书主题班会 课件
- 课题申报书:智能教育视角下基于眼动追踪的在线学习认知模型及自适应机制研究
- 2025年度考研政治马克思主义政治经济学核心考点复习汇编
- (二模)2024~2025学年度苏锡常镇四市高三教学情况调研(二)生物试卷(含答案)
- 《康复技术》课件-胫腓骨骨折术后康复
- “童”心协力 守护健康-校园传染病防控教育
评论
0/150
提交评论