ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:272.63KB ,
资源ID:19167595      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19167595.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验二Word文件下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验二Word文件下载.docx

1、FTPclient/Server。二、 实验内容和原理使用Win32 Socket 函数实现,不能使用MFC的Csocket类库(MFC的Csocket类库不能在LINUX、UNIX等环境下使用,跨平台性差),不能用C+ builder开发(编程量太少,C+ builder已完成了很多SOCKET代码的编写)。1. mini FTP client/ Server要求:在客户端至少实现GET file, PUT file, CD( change Directory), PWD( display current directory in server)功能。独立完成mini FTP client端

2、及 Server端程序。mini FTP client/ Server不一定要使用标准FTP协议,不一定要与现有的标准FTP server互通,也不一定要与现有的标准FTP Client(例如LEAP FTP)互通。mini FTP client/ Server可使用自定义的FTP协议、应用层PDU格式及握手方式。2. 补充:有能力的同学在完成任务后,可以进一步开发client端软件,尝试与现有的标准FTP server互通, 实现GET file, PUT file, CD( change Directory), PWD( display current directory in serve

3、r)等功能。有能力的同学在完成任务后,可以进一步在自己机器上的linux / unix平台下实现mini FTP client/ Server或聊天程序。三、 主要仪器设备联网的PC机。四、操作方法与实验步骤4.1 需求分析1、MiniFTP需要支持以下命令:GET、PUT、PWD、CD、LS、QUIT。2、PWD (显示当前目录)、CD (更改当前目录)、LS (列目录) 可理解为Request-Reply类服务。3、GET、PUT命令涉及文件内容传输 (可能很大),需要保证可靠性。需要检查文件是否已经存在、是否有读出或写入权限。4、正常情况下客户端应在断开连接前发送QUIT消息。否则,服务

4、器认为客户端为非正常断开。5、客户端能够选择目标服务器。6、服务器能与多个客户端相连。4.2 MiniFTP协议定义1、使用TCP作为下层传输协议。2、MiniFTP协议定义发送和接受的基本单位为Block。(1) 每个Block由type (4 bytes)、length (4 bytes)、data (length bytes)三部分组成。发送块时按顺序写进这三个字段。(2) data是Block的数据部分;length是data的长度。如果length为0,则Block不包含data部分。(3) 接收块时,首先读取块头 (type & length),再读满length bytes的da

5、ta。3、type分为三类。(1) 请求命令块,包括CommandLS、CommandPWD、CommandCD、CommandGET、CommandPUT、CommandQUIT。(2) 响应块,包括CommandOK,CommandERR,CommandINFO。(3) 附加块:Command0。(列目录/文件传输需要多于一块。)4、客户端的一次完整请求以请求命令块开始。(1) PWD、LS、CD、QUIT命令均只包含一个请求命令块;CD命令的目标目录放在CommandCD块data部分中。(2) GET命令以CommandGET块发送待下载的文件名。如果服务器回应CommandERR,则

6、GET失败。否则,开始循环接收Command0块 (文件数据),直到收到CommandOK块为止。(3) PUT命令以CommandPUT块发送待下载的文件名。如果服务器回应CommandERR,则PUT失败。否则服务器回复了Command0,客户开始循环发送Command0块 (文件数据),直到读完文件。最后写入一个无data部分的Command0块表示发送结束,等待服务器回复CommandOK。(4) 其它命令无data部分。5、服务器端的一次完整回应以回应命令块结束。(1) CommandOK表示操作成功,CommandERR表示操作失败。(2) PWD、CD响应均只包含一个响应块,当前

7、或更改后的目标目录放在块的data部分。(3) GET命令处理时,如不允许GET文件,则发送CommandERR块。否则,开始循环发送Command0块 (文件数据),直到读完文件。最后写入CommandOK块。(4) PUT命令处理时,如不允许PUT文件,则发送CommandERR块。否则,回复Command0块指示客户端可以发送。开始循环接Command0块 (文件数据),直到收到一个无data部分的Command0块。回复CommandOK。(5) QUIT不响应,而是断开连接。8、连接建立时,服务器发送欢迎信息 (以CommandINFO块形式)。客户收到此欢迎信息才可发送命令。4.3

8、 概要设计1、服务器。采用纯OO设计。(1) 主模块ServerMain,初始化和清理Winsock Support。(2) 服务器类Server,创建监听端口并启动监听任务。(3) 监听任务ServerListenTask,创建监听线程,接受连接并启动工作任务。(4) 工作任务ServiceWorkTask,与单个Client通信。其中包括启动新线程,发送欢迎消息、主命令循环和断开客户三部分工作。2、客户。采用模块化设计。(1) 主模块ServerClient,初始化网络并启动命令循环。(2) 命令分发模块processCommand。(3) 命令处理模块get、put、ls、cd、pwd。

9、3、公共部分。(1) 配置:服务器监听端口、块的最大数据长度。(2) 结构定义:块、块类型。(3) 公共功能:网络初始化函数、块接收函数、块写入函数。4.4 编码1、源代码见本报告所在文件夹下的source文件夹。(1) Client文件夹:客户代码。编译后产生MiniFTPClient.exe。(2) Server文件夹:编译后产生MiniFTPServer.exe。2、编译客户4.5 测试(为使报告易于阅读,已经一并写入报告第5节。五、实验数据记录和处理1、服务器启动。图表 1:服务器启动服务器启动成功,未发生网络错误。2、连接建立。(1) 不带命令行参数运行MiniFTPClient.e

10、xe。图表 2:MiniFTPClient不带参运行客户程序提示用户指定一个服务器。可输入服务器名称/IP进行连接。在这里输入localhost。(2) 连接建立:图表 3:连接建立 (Client)图表 4:连接建立 (Server)可见客户端连接成功,收到服务器的欢迎消息;服务器显示客户端信息。(3) 也可带参运行MiniFTPClient,提供服务器名称/IP作为命令行参数。图表 5:MiniFTPClient带参运行可见带参运行时不会再提示输入服务器名/IP了。2、多连接并发。图表 6:多连接并发支持刚才我们已经启用了两个Client实例,服务器能同时处理它们。3、PWD。图表 7:P

11、WD查看当前目录成功。4、LS。图表 8:LS列出当前目录成功。5、CD。(1) CD abc图表 9:CD abc无法进入不存在的目录。(2) CD 图表 10:CD 更改当前目录成功。6、GET。F盘下存在图片test.jpg。图表 11:F:test.jpg (on server)GET:图表 12:GET test.jpg传输成功。图片下载到客户端运行路径下并可查看。图表 13:test.jpg (Client)7、PUT。Client端存在文件:abc.jpg。现在让服务器进入Work目录 (已存在),并PUT:图表 14:CD work + PUT abc.jpg图片上传到服务器工

12、作路径并可查看。图表 15:计算机网络binServertest.jpg (Server)7、QUIT。图表 16:QUIT (Client)图表 17:QUIT (Server)退出成功。服务器显示提示。六、实验结果与分析(为使报告易于阅读,已经一并写入报告第5节并用粗体标示。七、讨论、心得1、本次实验中我尝试自己定义了一个基于块的传输协议。2、块的头部包含type和length字段。length字段用来保证接收方确切了解发送方发来的数据长度,避免了许多由于网络、TCP协议和Socket特性而导致的数据截断问题。3、块的type值有请求 (CommandGET/PUT/LS/CD/PWD/Q

13、UIT)、响应 (CommandOK/ERR) 和继续 (Command0) 三大类,支持Request-Reply风格的FTP通信。4、继续块 (Command0块) 被用来传输大量数据 (LS/GET/PUT),这样避免了专门建立数据连接的额外工作,有利性能提升。而标准FTP协议使用数据连接,便于即时控制的好处。两者各有优缺点。5、服务器较为复杂,设计是完全的OO-style,有服务器控制、监听任务、工作任务三个主要对象,其中工作任务对象 (与客户端通信的逻辑) 按需创建多个实例。 (详见概要设计部分)。6、客户端规模较小,故采用一般的结构化、模块划分方式实现。7、本次实验用到了多线程编程。其中线程功能被封装在一个类中 (Thread类) 。这个类模拟Java的Thread类,接受一个IRunnable接口作为将在线程上运行的对象,大大简化了编码并将多线程支持与主要逻辑分离。8、由于服务器与客户有许多公共部分 (协议数据定义、网络代码)。这些内容在MiniFTP.h定义,由服务器和客户共用,体系了代码重用的思想。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1