基于VC++的大文件传输软件设计

来源 :无线互联科技 | 被引量 : 0次 | 上传用户:truebyb
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:本文介绍了一种基于VC++的利用Socket进行TCP/IP连接,实现大文件传输的方法。本软件采用多线程思想设计可以使程序开销较小,运行更加流畅。
  关键词:Socket;TCP/IP;多线程;大文件
  1 引言
  文件传输软件是一种很常见的软件,但是很多传输软件对要传送的文件的大小有要求,一般最大是4G,当传输的文件大于4G时就无法传输。本文设计的传输软件几乎可以不受文件大小的约束。而且系统开销小,操作简单。
  2 软件设计
  2.1 套接字(Socket)
  套接字是通信的基石,是支持TCP/IP协议的网络通信单元。可以将套接字看作不同主机间的进程双向通信的终点,它构成了在单个主机内及整个网络间的编程界面。套接字有两种不同的类型:流套接字和数据套接字。流套接字提供双向的、有序的、无重复并且无记录的数据流服务,它适用于处理大量数据。数据套接字支持双向的数据流,但并不保证数据传输的可靠性、有序性和无重复性。因此,根据本文的设计的需要选择流套接字。
  2.2 客户机/服务器模型
  本软件采用的是服务器客户机的模式。一个服务程序通常在一个众所周知的地址监听客户对服务的请求,也就是说,服务进程一直处于休眠状态,知道一个客户对这个服务的地址提出了连接请求。在这个时刻,服务程序被“惊醒”并且为客户提供服务——对客户的请求做出反应。这一请求/响应的过程可以简单地用图1表示。
  3 软件的编程实现
  该软件是在VC++6.0上编程实现的,下面介绍该软件的几个关键部分。
  3.1 大文件传输的处理
  一般传输软件设计的数据类型都是32位的,所以传输文件最大只能是4G。本文将文件大小的数据类型定义为64位,那么传输文件可以到234G,几乎为无穷大。软件的部分代码如下:
  unsigned __int64 m_FileLength=0;
  m_FileLength=m_FileLength+StreamFileInfo.nFileSizeHigh;
  m_FileLength=m_FileLength<<32;
  m_FileLength=m_FileLength+StreamFileInfo.nFileSizeLow;
  其中m_FileLength为无符号的64为类型,存储文件的长度。StreamFileIfo为文件信息结构体类型,其中将文件的大小信息分割成长度为32位的两部分,分别存在StreamFileInfo.nFileSizeHigh和StreamFileInfo.nFileSizeLow里面。
  3.2 多线程实现
  该软件采用两个线程,一个是接收线程UINT ReceiveDataThread(LPVOID lpParam);另一个是发送线程UINT SendDataThread(LPVOID pParam);当服务器端点击发送按钮后启动发送线程,启动发送线程的函数为:AfxBeginThread((AFX_THREADPROC)SendDataThread,this,THREAD_PRIORITY_NORMAL);
  当客户端点击接收按钮后启动接收线程,启动接收线程的函数为:AfxBeginThread(ReceiveDataThread,this,THREAD_PRIORITY_NORMAL);
  服务器与客户机的通信流程见图2。
  3.3 磁盘剩余空间判断
  当客户端接收文件的时候首先判断磁盘的剩余空间是否可以满足文件大小的要求,然后再进行传输。获取磁盘信息的函数为:GetDiskFreeSpaceEx(str.Left(3),&lpuse,&lptotal,&lpfree);
  其中,str.Left(3)为磁盘的盘符,lpuse为已用空间大小,lptotal为总的空间大小,lpfree为剩余空间大小。最后将lpfree与m_FileLength作比较判断磁盘空间是否满足文件存储的要求。
  4 总结
  本文通过在VC++6.0上编程实现了可以在整个网络传输的功能,传输文件的大小几乎没有限制,服务器可以随时暂停和终止文件的传输,客户端在接收文件的时候可以事先判断磁盘的容量,当磁盘空间不足的时候会出现提示信息。下图为实际生成的软件界面。
  [参考文献]
  [1]莫海光.用VC++实现的文件传输工具[J].计算机信息技术,2007年第15期.
  [2]陈坚,陈伟,等.Visual C++网络高级编程[M].人民邮电出版社,2001年.
其他文献
“智能纺织品”最近被纺织产业和媒体多次提及.据印度一家市场研究公司评估,作为一种高科技纺织品,智能纺织品行业的总值到2020年将达47亿美元.鉴于智能纺织品行业2014年的总
摘 要:智能电网已成为当今电力行业发展的必然趋势。通信技术作为智能电网的关键技术受到越来越多的关注。本文详细介绍了智能电网的发展历程、概念及主要特点,最后深入分析了几种主要现代通信技术的应用背景及发展前景。  关键词:智能电网;电力;通信技术  1 背景  在不断增大的全球资源环境压力下,伴随着不断深入的电力市场化进程以及电力用户对电能质量要求的不断提高,如何加快建设和发展更具安全性、可靠性、环保
本文通过对荣华二采区10
期刊
现代学校重要的价值追求在于让人享受“教育的幸福”。在我看来,这种教育的幸福感不应该是单方面的。真正的现代学校应该使教师教得幸福,学生学得幸福。没有幸福感的教师,难育有幸福感的“未来人”。  什么是教师的幸福?我认为,教师的幸福感包括两大方面:一是教育教学专业的幸福感,二是学校组织文化的幸福感。这两方面又是相互影响的。因此,作为校长,应该从这两方面入手,改进我们的管理,增强教师的幸福感。  从现实的
为探究吕家坨井田地质构造格局,根据钻孔勘探资料,采用分形理论和趋势面分析方法,研究了井田7
武术散打教学要想有效地提高教学质量,培养学生的学习兴趣是重要的研究课题.“知之者不如好之者,好之者不如乐之者”,有了浓厚的兴趣,就等于有了一个良好的开端.本文就武术套
2016年6月5日,山深处——孟繁玮画展在北京三恒美术馆开幕。本次展览是艺术家孟繁玮在这一创作阶段的总结性呈现,共展出作品29幅,分为古意抒怀、淡墨轻岚、水语创变三类。每
“山水城市”从概念提出到画派形成并逐渐发展初具规模,关于“山水城市”画的理论研究与实践创作一直在如火如荼地开展,创作风格、技法与理念日渐丰富多样,其画作的质量也得
区划调整后的新西城,现有学段教育的中学43所,其中初中2所,完中41所,示范性高中15所,南区小学271所,特殊教育学校3所,师生数量和学校数量都发生了较大变化,示范校的比例也居