可视化文件消息收发一体化Socket实现V0.1

来源:互联网 发布:dosbox0.74如何编程 编辑:程序博客网 时间:2024/04/30 03:38

可视化文件消息收发一体化Socket实现V0.1

可视化文件消息一体化收发Socket实现V0.1 说明文档 下载地址:http://download.csdn.net/detail/wojiushiwo987/5149658

可视化文件消息一体化收发Socket实现V0.1 源码       下载地址:http://download.csdn.net/detail/wojiushiwo987/5149657


1概述

本设计旨在通过socketTCP实现不同类型文件的收发,UDP实现消息的收发。

1.1 需求概述

基本需求:

1)  支持发送不同类型的文件(.txt.doc.jpg.exe.mp3等所有类型)

2)  支持发送字符消息。

3)  支持可视化、直观显示与操作。

4)  支持单机收发、局域网内两台机器收发。

1.2开发环境

 编程语言:C++语言

开发及运行环境:Window操作系统、集成开发环境VS2008

2界面设计


2.1服务器端界面


2.2客户端界面

3总体设计

           总体设计需要参照设计要求去设计。

         针对要求一:支持发送不同类型的文件(.txt.doc.jpg.exe.mp3等所有类型)。

          Socket实现通信自不必说,而文件的传输归根结底是文件的读、写。文件的读写涉及到文件的属性:文件的名称(含扩展名,所在路径名)、文件大小、文件内容信息。

         核心有三点

      (1)读取文件的前提是知道文件的路径。文件的名称+文件所在的路径即为文件的绝对路径。而存储文件的时候也需要同发送文件名字相同存储,亦需要知道接收文件的路径。

     (2)发送、接收的过程都要涉及读取、接收累计字节的多少和文件大小比较,这也是验证文件是否读取完毕或者接收完毕的方法。

     (3)文件内容信息,即整个文件长度的字节数,可以循环读文件到buffer、写文件到buffer,最后写入磁盘路径来完成写入。

      文件的传输考虑到可靠传输,可以通过TCP套接字来实现。

      针对要求二:支持发送字符消息。

      发送字符消息,可以采取一端等待接收、一端发送消息的UDP套接字来实现。

       针对要求三:支持可视化、直观显示与操作。

         考虑到能直观显示指定发送源文件夹sourcefile,接收目标文件夹destfile里的内容。我们考虑采用listCtrl列表框通过图标+文件名称+扩展名的形式显示文件。且可以关联单击添加、左双击打开、右双击删除的操作。

         考虑到对接收到文件的直观显示,对于图片的显示,我们借鉴设计了缓存模式和存盘模式。缓存模式将接收到的文件显示在我们设定的区域。而对于硬盘模式,文件存储在对应磁盘的destfile文件夹下,同时在接收端的listctrl列表框会有对应图标显示。仅图片可以缓存模式显示,所有类型的文件都可以通过硬盘模式存储和直观显示。

        针对要求三:支持单击收发、两台机器收发。

         考虑到支持不同机器收发,我们设计了可配置的IP地址和端口号的模式。方便操作和实现。

4服务器端的核心设计流程


5客户端的核心设计流程


文件收发操作示例

步骤一:


6.1服务器端配置完毕后

如图6.1所示,勾选服务器配置复选对话框,无需更改配置,单击配置完毕、单击启动服务,完成等待连接。此时选择的是缓存模式。

步骤二:


6.2客户端选中待发送文件,点击接受按钮

如图6.2所示,点击文件发送list列表框,选择待发送的文件123.jpg。单击接受按钮,以等待接受UDP消息。已选框可以有多个不同类型的文件,但发送的时候,一次只能发送一个文件,以最后选择的文件为准。

 

步骤三:


图6.3客户端单击连接请求、发送按钮后

如图6.3所示,点击连接请求、发送按钮后,客户端显示文件发送滚动条完毕,发送状态栏记录了发送状态及发送的字节数。

 

服务器端接受发送文件后的界面如图6.4所示。


6.4服务器端缓存接收发送文件后

      如图6.4所示,服务器端缓存接收文件会在右侧显示,左侧Socket状态栏会显示接收状态。

  

       同步骤1à步骤3,若改为硬盘模式接收。硬盘模式步骤3截图如下图6.5、图6.6


         图6.5客户端单击连接请求、发送按钮后,发送sangfor.txt


6.6服务器端硬盘模式接收,并双击Sangfor.txt打开后截图。

如图6.7,服务器端写入消息并单击发送按钮后,客户端能接收消息并显示。


6.7客户端接收服务器端消息后显示

 

待扩展、完善功能

(1)      客户端现在一次仅能发送一个文件,可扩展至一次发送多个文件

(2)      目前的连接、发送、接收,一次发送、一次接收完毕套接字即关闭,可扩展至建立连接后可持续发送

 发现bug请联系:ycy360@163.com

2013-3-16