文档详情

MFCFTP文件传输.doc

发布:2017-05-19约字共24页下载文档
文本预览下载声明
大学研究生堂下考试答卷 2014-2015学年第 1 学期 考试科目 姓 名 年 级 专 业 2014年 12月 28日 《面向对象程序设计》课程报告 学号: 姓名: 学院: 题目 基于MFC的聊天室与FTP文件传输系统 选 题 背 景 首先经过一个学期关于C++的学习,我们希望能够运用所学的知识做出一些具有使用价值的产品。另外,由于本身专业是通信工程,基于对通信软件编程方面兴趣,希望能够在完成课程设计的同时能够加深自己对通信底层原理的理解。因此我们选择的题目是基于MFC的网络聊天室与FTP文件传输的编程。并且希望最后编写好的程序能够在同学之间进行交流以及文件共享方面具有一定的实用价值。最后,希望在完成编程的过程中提高自己C++方面的能力以适应今后的学习与发展。 实现的功能: 1. 支持多个客户端与服务器端之间的连接。 2. 支持客户端与客户端之间的通信。 3. 支持服务器端与客户端之间的通信。 4. FTP客户端方面支持文件的下载、上传、以及删除的功能。 5. FTP文件传输方面拥有两个客户端,一个是用于单线程的,另一个是用于多线程的,本实例对两个客户端的工作方式进行了对比。 实现环境及开发工具 1.windows 7/8.1操作系统(实现环境) 2.visual studio2010/2013(开发工具) 3.MSDN2008(帮组文档) 4.StarUML(UML制图工具) 基 础 知 识 由于本实例是通信网络编程,使用到了很多网络通信方面的知识,其中包括WinSock编程以及Inet编程下面介绍一下两类编程的基础知识 一Sock编程 2.套接字工作过程 由于本实例是采用C/S模式进行编程,是由客户端与服务器端组成的。流式套接字与报文套接字编程的原理是不一样的。 ①流式套接字原理 流式套接字是面向连接的,在进行数据传输之前需要在服务器与客户端之间先建立起连接。其建立连接的过程主要分为四步。 i.服务器端初始化套接字并绑定端口。 ii.服务器端套接字启动监听状态,调用Listen()函数。 iii.客户端端建立套接字并绑定端口。 iv.客户端请求连接。 v.服务器端接受连接请求。 其工作过程见图1.1。 图1.1:流式套接字工作过程 ②报文套接字工作原理 报文套接字不需要在数据传输之间建立连接,只需绑定对应的端口然后将数据发往对应的网络地址即可。其工作过程见图1.2。 图1.2:报文套接字工作过程 Inet编程 WinInet是windows internet扩展应用程序高级编程接口,是专为开发具有Internet功能的客户机端应用程序而提供的。它有两种形式:WinInet API包含一个C语言的函数集,MFC WinInet类则是对前者的面向对象的封装。WinInet主要用于Internet关于FTP文件传输协议,HTTP超文本传输协议以及Gopher文件传输协议。 ①MFC中WinInet包含的类 i.CinternetSession类:由CObject类派生,代表应用程序的一次Internet会话,每个访问Internet的应用程序都需要一个CInternetSession类对象。 ii.连接类:连接类主要包括CinternetConnection类以及它的派生类CFtpConnection类、CHttpConnection类和CGopherConnection类。 iii.文件类:包括CInternetFile类以及它派生的CHttpFile类和CGopherFile类,另外文件查找类CFileFind也是文件类。 iv.CInternetException类:MFC WinInet类的成员函数在执行时所发生的错误或异常,往往用try/catch逻辑结构来处理异常。 ②WinInet编程的步骤 i.创建CInternetSession类对象,创建并初始化Internet会话 ii.创建连接对象类,建立CInternetSession对象与网络服务器的连接,也就是应用程序与服务器的连接。本实例创建CFtpConnection类。 iii.创建文件检索类,对文件进行检索。 iv.创建异常类CInetnetException类,处理错误。 v.关闭各种类,释放资源。 三多线程编程 Windows本身是一个多进程多线程的操作系统,因此在日常的应用编写中最好能够使用多线程的技术。在windows环境下开发多线程应用程序可以利用提供的Win32API接口函数,也可以利用微软提供的MFC类库进行开发。两种方式对于多线程编程原理是一样的,用户可以根据需要选择相应的工具。本实例主要用到的是
显示全部
相似文档