缔冠期刊网

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

2022-06-08

  1引言
  文件传输软件是一种很常见的软件,但是很多传输软件对要传送的文件的大小有要求,一般最大是4G,当传输的文件大于4G时就无法传输。本文设计的传输软件几乎可以不受文件大小的约束。而且系统开销小,操作简单。
  2软件设计
  2.1套接字(Socket)
  套接字是通信的基石,是支持TCP/IP协议的网络通信单元。可以将套接字看作不同主机间的进程双向通信的终点,它构成了在单个主机内及整个网络间的编程界面。套接字有两种不同的类型:流套接字和数据套接字。流套接字提供双向的、有序的、无重复并且无记录的数据流服务,它适用于处理大量数据。数据套接字支持双向的数据流,但并不保证数据传输的可靠性、有序性和无重复性。因此,根据本文的设计的需要选择流套接字。
  2.2客户机/服务器模型
  本软件采用的是服务器客户机的模式。一个服务程序通常在一个众所周知的地址监听客户对服务的请求,也就是说,服务进程一直处于休眠状态,知道一个客户对这个服务的地址提出了连接请求。在这个时刻,服务程序被"惊醒"并且为客户提供服务--对客户的请求做出反应。这一请求/响应的过程可以简单地用图1表示。
  3软件的编程实现
  该软件是在VC++6.0上编程实现的,下面介绍该软件的几个关键部分。
  3.1大文件传输的处理
  一般传输软件设计的数据类型都是32位的,所以传输文件最大只能是4G。本文将文件大小的数据类型定义为64位,那么传输文件可以到234G,几乎为无穷大。软件的部分代码如下:
  unsigned__int64m_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多线程实现
  该软件采用两个线程,一个是接收线程UINTReceiveDataThread(LPVOIDlpParam);另一个是发送线程UINTSendDataThread(LPVOIDpParam);当服务器端点击发送按钮后启动发送线程,启动发送线程的函数为: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]陈坚,陈伟,等.VisualC++网络高级编程[M].人民邮电出版社,2001年.

论文中心更多

期刊百科
期刊投稿 期刊知识 期刊审稿 核心期刊目录 录用通知 期刊版面费 投稿期刊推荐 学术问答
基础教育
小学语文 中学语文 小学数学 中学数学 小学英语 中学英语 物理教学 化学教学 生物教学 政治教学 历史教学 地理教学 科学教学 音乐教学 美术教学 体育教学 信息技术 班主任管理 校长管理 幼教 教育管理 微课教学 作文教学 德育教学 教学设计
医学论文
内科医学 外科医学 预防医学 妇科医学 检测医学 眼科医学 临床医学 药学论文 口腔医学 中西医 中医学 外科 护理 基础医学 急救医学 老年医学 医学实验 儿科医学 神经医学 兽医学 肿瘤医学 综合医学
职业教育
教育学原理 电影文学教育 学前教育 教育学管理 高等教育学 教育技术学 职业技术教育 成人教育学 特殊教育学 教育心理学 家庭教育 教育毕业 中专中职教育 教学设计 国学教育 学术研究 大学教育
药学卫生
社区门诊 医药学 医患关系 医院管理 疾病预防 保健医学 公共卫生 医学教育
文科论文
农业经济 工商管理毕业 会计毕业 行政管理 法律毕业 市场营销 经济毕业 汉语言文学 财务管理 物流管理 人力资源 旅游管理 国际贸易 物业管理 新闻学 企业管理 金融银行 社会科学 食品安全 办公档案 审计学 税务税收学 外国文学 哲学
理科论文
机电毕业 土木工程 计算机毕业 电气毕业 建筑毕业 电子商务 工程毕业 设计毕业 机械制造 汽车毕业 园林毕业 农学毕业 数控毕业 软件技术 水利工程 环境生态 畜牧渔业 化工毕业 科技创新 石油矿藏
论文格式
开题报告 论文题目 摘要关键词 目录提纲 论文致谢 参考文献 附录其他 论文答辩
职业论文
教育论文 经济论文 科技论文 财会论文 管理论文 医学论文 法学论文 文学论文 工业论文 建筑论文 农业论文 水利论文 计算机论文 社科论文 机械论文 生态环境 中西文化

先发表后付款 不成功可退款

权威机构认证 专注期刊10余年 1000余家杂志社长期合作

缔冠期刊网

首页 网站地图 返回顶部
Copyright © 1998- 缔冠期刊网