欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!
沃文网
全部分类
  • 教学课件>
  • 医学资料>
  • 技术资料>
  • 学术论文>
  • 资格考试>
  • 建筑施工>
  • 实用文档>
  • 其他资料>
  • ImageVerifierCode 换一换
    首页 沃文网 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    文件传输系统设计文档.doc

    • 资源ID:1082991       资源大小:511KB        全文页数:18页
    • 资源格式: DOC        下载积分:10积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要10积分
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,下载更划算!
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    文件传输系统设计文档.doc

    1、文件传输系统设计文档1引言21.1编写目的21.2背景21.3部分用到的词定义22程序详细设计32.1程序描述32.2功能32.3性能102.4模块划分102.5程序系统的结构112.5.1串行化的传输112.5.2并行的传输112.5.3SOCKET类的封装122.5.4SOCKET的TCP连接流程图122.5.5服务器端数据流图132.5.6客户端数据流图142.6接口/类具体设计162.7任务分配182.8尚未解决的问题182.9 BUG记录181引言1.1编写目的 按照公司布置的实习任务,实现文件传输系统,并完成代码的撰写,在编写代码的过程中,对学过的专业知识进行回顾,加强编写代码的能

    2、力和逻辑思维能力,初步掌握C+网络编程原理。在撰写设计文档的过程中,对一个项目的设计开发过程进行梳理,熟悉设计文档编写的规范和要求,为今后项目开发打下坚实的基础。1.2背景 该项目是在Visual C+的MFC下进行的开发,要求对C+语言熟练的掌握,系统的开发涉及到网络原理的SOCKET编程和操作系统的多线程编程技术。文件传输功能成为现在流行的即时通信工具不可少的一部分。要实现一个功能较完善的文件传输工具,若只能实现文件的发送与接收,显然是不够的。本文开发的文件传输工具,通过使用多线程、自定义的传输命令等技巧,实现了多个用户之间并发传输多个文件,并可以在传输过程进行简单交互的功能。1.3部分用

    3、到的词定义 Socket:通常也称作套接字,用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过套接字向网络发出请求或者应答网络请求。CSocket类:是MFC对Windows Socket编程的类的封装,其派生于CAsyncSocket类,即是CAsyncSocket类的更抽象的封装,用该类来完成Socket编程将更方便。串行化:将对象存储到介质(如文件、内在缓冲区等)中或是以二进制方式通过网络传输。之后可以通过反串行化从这些连续的字节(byte)数据重新构建一个与原始对象状态相同的对象,因此在特定情况下也可以说是得到一个副本,但并不是所有情况都这样。TCP:Transmission

    4、 Control Protocol 传输控制协议,是一种面向连接的、可靠的、基于字节流的运输层通信协议。多线程:为了使得多个线程并行的工作以完成多项任务,以提高系统的效率。线程是在同一时间需要完成多项任务的时候被实现的。2程序详细设计2.1程序描述2.1.1 利用socket进行TCP连接 文件传输系统包括一个服务器端和一个客户端。接收方是TCP的服务器端,发送方是TCP的客户端。2.1.2 同步的多线程传输方式 要实现并行传输,即服务器端可以同时接收几个客户端发送的文件,我们采用了同步的多线程方式,在程序中有两类线程:接收线程和发送线程,其中监听线程在接收端,发送线程在发送端。2.1.3发送

    5、端与接收端的交互 a.发送端询问接收端,是否同意接收文件以及接收端的应答。 b.在传输过程中发送端取消文件发送。 c.在传输过程中接收方取消文件接收。2.2功能1. 文件在传输过程时应不影响用户界面其它的操作;2. 在正式传输文件前,发送方应先发送请求,接收方可以同意或拒绝文件发送,接收方同意后才能进行传输;3. 客户端在文件传输过程中,可以显示文件的信息,如文件名,保存路径,文件大小;以及显示传输进度,如完成的百分比,速度;4. 文件在传输过程中接收方和发送方都可以取消文件传输过程;5. 可以多个客户端同时向服务器并行发送文件;6.传输过程中,服务器端和客户端可以进行对话。l 功能界面图:图

    6、1-1客户端操作界面图1-2服务器操作界面l 客户端的用例图:图1-3 客户端用例图客户端用例描述:用例1:连接参与者: 客户端用户前置条件:1、启动Client.exe2、设置好正确的IP地址和端口后置条件:与服务器端建立连接触发条件:点击“连接”正常流程:1、创建客户端套接字2、与服务器建立连接3、初始化套接字异常流程:1、IP地址为空,提示“IP地址不能为空”2、客户端连接套接字创建失败,消息对话框提示3、客户端连接套接字连接失败,消息对话框提示4、服务器的问题,消息对话框提示 初始化错误 对方没有启动 对方已经关闭 连接的尝试被拒绝 在一个非套接字上尝试了一个操作 特定的地址已在使用中

    7、 与主机的连接被关闭 一般性错误 用例2:断开参与者:客户端用户前置条件:与服务器端连接后置条件:与服务器端断开连接触发条件:点击“断开”正常流程:1、告诉服务器连接被断开 2、关闭客户端套接字 3、弹出消息对话框,“断开”异常流程: 用例3:浏览文件参与者:客户端用户前置条件:启动Client.exe后置条件:1、显示文件路径 2、显示文件大小触发条件:点击“浏览文件”正常流程:1、选择文件2、获取文件路径,文件名 3、打开文件 4、获取文件大小 5、关闭文件异常流程: 用例4:发送参与者:客户端用户前置条件: 1、已连接到服务器端 2、已经选定文件 后置条件:将文件发送到服务器端触发条件:

    8、点击“发送”正常流程: 1、向服务器发送文件名和文件大小,请求发送2、当对方同意且准备好接收文件时,启动文件发送线程3、发送文件异常流程: 1、连接的请求被拒绝 2、服务器已经关闭了连接,提示“对方已关闭” 3、发送文件的请求被拒绝,提示 4、对方取消了发送 用例5:取消发送参与者:客户端用户前置条件:文件正在发送中后置条件:发送过程被取消触发条件:点击“取消”正常流程:1、弹出“取消确认”对话框 2、进入扩展用例1用例6:退出参与者:客户端用户前置条件: client.exe在运行过程中后置条件:弹出“取消确认”对话框触发条件:点击“退出”正常流程:1、弹出“退出确认”对话框 2、进入扩展用

    9、例2异常流程:用例7:聊天参与者:客户端用户前置条件: client.exe在运行过程中后置条件: 信息发送到服务器端触发条件: 按回车键,或点击“发送”正常流程: 1、在“text”上输入信息 2、按回车键,或点击“发送” 异常流程:扩展用例1:取消确认参与者:客户端用户 前置条件:点击“取消”前置条件: 点击“取消”后置条件: 1、确认取消,停止传输文件,告诉对方发送被取消 2、不取消,则返回继续传输触发条件:点击“取消确认”正常流程:若确认取消异常流程 扩展用例2:退出确认参与者: 客户端用户前置条件: 点击“退出”后置条件: 1、确认退出,停止传输文件 2、不退出,则返回程序中触发条件

    10、:点击“退出确认”正常流程:1、如果正在文件传输过程中,弹出信息提示“请先停止传送后再退出” 2、断开连接 3、消除对话框 l 服务器端用例图: 图1-4 服务器用例图服务器用例描述:用例1:启动参与者: 服务器端用户前置条件: 运行server.exe后置条件: 对客户端进行监听触发条件:点击“启动”正常流程:1、创建客户端连接字CCListenSocket 2、监听客户端连接异常流程: 用例2:关闭参与者: 服务器用户前置条件:监听客户端后置条件:关闭服务器套接字触发条件:点击“关闭”正常流程:关闭服务器套接字异常流程: 用例3:取消参与者:服务器用户前置条件:文件在传输过程中后置条件:文

    11、件停止传输触发条件:点击“取消”正常流程:1、弹出“取消确认”对话框 2、进入扩展用例1异常流程: 用例4:退出参与者: 服务器端用户前置条件:运行server.exe后置条件:弹出“取消确认”对话框触发条件:点击“退出”正常流程:1、弹出“退出确认”对话框 2、进入扩展用例2异常流程: 用例5: 聊天参与者: 服务器端用户前置条件:运行server.exe后置条件:向服务器端群发消息触发条件:输入“回车”,或点击“发送”正常流程:1、在“text”中输入信息 2、输入“回车”,或点击“发送”异常流程: 扩展用例1:取消确认参与者: 服务器端用户前置条件: 点击“取消”后置条件: 1、确认取消

    12、,停止传输文件,告诉对方发送被取消 2、不取消,则返回继续传输触发条件:点击“取消确认”正常流程:若确认取消异常流程: 扩展用例2: 退出确认参与者:服务器端用户前置条件: 点击“退出”后置条件: 1、确认退出,停止传输文件 2、不退出,则返回程序中触发条件:点击“退出确认”正常流程: 1、如果正在文件传输过程中,弹出信息提示“请先停止传送后再退出” 2、断开连接 3、消除对话框异常流程: 2.3性能1、可传输大型文件,大于50M2、客户端在传输大型文件的同时,还可与服务器端进行会话3、一个服务器端可以接收多个客户端的并发传输4、多客户端进行并行传输时速度达到每秒1M左右2.4模块划分 在用例

    13、图中已进行分析。2.5程序系统的结构 这个程序所采用的是基于TCP/IP协议的Winsock编程原理,这种编程模型一般都是采用客户机/服务器(Client/Server)方式,在这个程序里面也正是采用这种基本的方法。 在通信的时候主要可以分为两个部分,一个部分是用于传送控制信息,例如发送文件的请求,文件的名称、大小等,由于这方面的数据量比较小,为了方便起见我采用了MFC所提供的CSocket类的串行化技术来实现;而另一个部分就是文件的传输部分,对于文件的传输,由于数据量相对来说比较大,所以我分别写了两个线程,一个用于发送,一个用于接收。这两个部分在具体实现的时候分别建立有自己的套接字(Sock

    14、et)。2.5.1串行化的传输 程序传送控制信息的时候采用的是CSocket类的串行化技术,这样一来使得发送和接收网络数据就像普通的数据串行化一样简单。封装一个可以串行化的消息类,消息的发送和接收只需使用流操作符对缓冲区进行存取就可以了。根据程序的需要,对消息类的CMessage的构造函数进行了重载,CMessage()为默认的构造函数,如果只是发送一般的控制信息我们可以使用CMessage(int nType)构造函数,当需要发送文件名及客户端的编号的时候我们可以使用CMessage(int nType, CString strFileName, DWORD nCount)构造函数,2.5.

    15、2并行的传输要实现并行传输,即服务器端可以同时接收几个客户端发送的文件,我们采用了同步的多线程方式,在程序中主要有两类线程:_SendThread(发送线程)和_ListenThread(接收线程)。在发送线程中实现了创建客户端套接字,连接服务器端,调用主对话框类中的SendFile成员函数进行文件的发送;在接收线程中实现了创建服务器端套接字,对客户端进行监听,向主对话框发送一个自定义消息WM_ACCEPT_TRANSFERS,发送一个信息告诉发送方可以开始发送文件,接受连接,调用主对话框类中的ReceiveFile成员函数进行文件的接受。2.5.3 SOCKET类的封装服务器端:1. CLi

    16、stenSocketCListenSocket是负责监听管理的套接字类;CListenSocket(CFileTransfersDlg* pdlgMain)为重载的构造函数;m_pdlgMain为指向主对话框类CServerDlg的指针。重载基类Csocket的OnAccept函数以使对来自客户的连接请求作出响应, 当该套接字接收到客户的连接请求时,就调用CServerDlg对象的ProcessAccept()函数进行处理。2. CTransferSocketCTransferSocket是负责初始化、传送与接收串行化消息的类,继承于CSocket,参数m_pFile为一个CSocketFil

    17、e类型的指针用于连接到一个CSocket对象;m_pArchiveIn和m_pArchiveOut均为CArchive类型的指针,分别用于接受和发送。该类重写了CSocket中的OnReceive函数,当有消息在Carchive对象提供的缓冲区中,CTransferSocket自动调用OnReceive函数,用以处理客户端发送过来的消息。Init成员函数用于串行化的初始化,Abort成员函数用于对m_pArchiveOut指针进行释放,SendMsg成员函数用于发送信息,ReceiveMsg成员函数用于接受信息。客户端:1. CClientSocketCClientSocket作用与服务器端的

    18、CTransferSocket类作用基本相同,OnReceive函数实现有所不同。2.5.4 SOCKET的TCP连接流程图图2-1 服务器与客户端连接流程图2.5.5服务器端数据流图图2-2 服务器端数据流图2.5.6客户端数据流图图2-3 客户端数据流图2.6接口/类具体设计l 文件传输过程的交互图图2-4 文件传输交互图l 类图设计2.7任务分配代码部分:施余主要负责服务器端的开发,张一负责客户端的开发设计文挡部分:张一负责整个文档的初稿,施余负责后期的修改2.8尚未解决的问题1、传输速率有待进一步提高,可以将一个文件拆分成多个数据包进行多线程传输。2、服务器无法定向中止某一个客户端传输

    19、文件,只能终止所有客户端的文件传输2.9 BUG记录序号Bug描述原因解决方法1多个客户端连接服务器后,最后一个连接的客户端可以发送文件,之前连接的客户端无法发送文件服务器端保存的客户 socket为最后一个申请连接的客户端服务器给每个连接的客户端一个编号,并把每个服务器accpet到的客户端socket放入链表2多个客户端连接服务器,服务器无法向所有客户端群发消息原因同序号1循环保存所有客户端socket的链表,向每个socket发送消息3发送聊天消息时,键入“回车”,程序退出Enter键默认为确定操作使“发送消息”按钮为默认按钮,按回车键可以发送消息4服务器取消保存时,客户端没有收到发送被拒绝的消息,继续以准备传输的状态等待缺乏一个对服务器没有接收文件的事件的响应1、服务器拒绝接收时,同时向客户端发送一个拒绝接收的信息18


    注意事项

    本文(文件传输系统设计文档.doc)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给沃文网发消息,QQ:2622162128 - 联系我们

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

    Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1

    陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922