用mfc实现局域网内点对点的大文件传输

用mfc实现局域网内点对点的大文件传输

ID:26187951

大小:222.50 KB

页数:30页

时间:2018-11-25

用mfc实现局域网内点对点的大文件传输_第1页
用mfc实现局域网内点对点的大文件传输_第2页
用mfc实现局域网内点对点的大文件传输_第3页
用mfc实现局域网内点对点的大文件传输_第4页
用mfc实现局域网内点对点的大文件传输_第5页
资源描述:

《用mfc实现局域网内点对点的大文件传输》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、用MFC实现局域网内点对点的大文件传输广东省科学技术职业学院01网络(2)班章泽昂相信很多人都用过QQ吧?而QQ的里面“传送文件”的功能也应该有不少的人用过吧?而关于实现文件传输的方法也有很多。趁着暑假的空闲时间,我用VC6.0+SP5按照自己的思路也写了一个,程序的界面如图1所示。先给大家简单介绍一下基本的思路。这个程序所采用的是基于TCP/IP协议的Winsock编程原理,相信如果对这方面的程序设计有所了解的人都应该知道对于这种编程模型一般都是采用客户机/服务器(Client/Server)方式,在这个程序里面也正是

2、采用这种基本的方法。为了方便使用,我把客户机和服务器合而为一,但其实质还是一样的。在通信的时候主要可以分为两个部分,一个部分是用于传送控制信息,例如发送文件的请求,文件的名称、大小等,由于这方面的数据量比较小,为了方便起见我采用了MFC所提供的CSocket类的串行化技术来实现;而另一个部分就是文件的传输部分,对于文件的传输,由于数据量相对来说比较大,所以我分别写了两个线程,一个用于发送,一个用于接收。这两个部分在具体实现的时候分别建立有自己的套接字(Socket)。下面,就让我为大家演示一下详细的实现步骤。一.建立一个

3、新工程FileTransfers使用MFCAppWizard(exe)建立一个新项目FileTransfers,选择基于对话框的应用,并在向导的第四步中,选择“WindowsSocket”选项,如图2所示其它步骤中都使用缺省值,然后按下“Finish”按钮,创建如图3所示属性的工程。AppWizard将自动创建如下的类。类名定义文件实现文件CAboutDlgFileTransfers.cppFileTransfers.cppCFileTransfersAppFileTransfers.hFileTransfers.cpp

4、CFileTransfersDlgFileTransfersDlg.hFileTransfersDlg.cpp二.修改资源1.修改主对话框风格修改AppWizard为我们创建的对话框模风格。点击位于DialogProperties对话框上面的Style标签,然后按照图4设置风格属性。2.添加控件按照图1所示在对话框中加入相应的控件。□“服务选择”分组框(GroupBox)。用于表明其中的两个单选按钮是属于一组的。它的标题(Caption)为“服务选择”,使用默认的ID值就行了。□“服务器(S)”和“客户端(C)”单选按钮

5、(RadioButton)。这两个单选按钮定位在“服务选择”分组框(GroupBox)中,用于确定软件当前是服务器或是客户端。将“服务器(S)”按钮的ID设置为IDC_RADIO_SERVER,“客户端(C)”按钮的ID设置为IDC_RADIO_CLIENT,其它的属性分别按照图5和图6所示进行设置。□“IP地址”IP地址控件(IPAddress)。当软件做为服务器端时,该控件所显示的是本地的IP地址;当软件做为客户端时,用于输入服务器的IP地址。其ID为IDC_IPADDRESS,其余属性采用默认值。□“端口号”编辑控

6、件(EditBox)。用于确定通讯的端口号。所有属性均按照默认值既可。□对话框中部分静态文本控件(Text)的属性如下所示。ID标题(Caption)用途IDC_FILE_NAMEFileName显示当前正在传输的文件名IDC_FILE_SIZE0字节显示当前正在传输的文件尺寸IDC_RECEIVE_SIZE0字节显示已经发送或接受的文件尺寸□先删除对话框中原有的确定按钮,然后再按照图1所示添加和修改按钮的属性,最终对话框中按钮的属性如下所示。ID标题(Caption)用途IDC_BEGIN启动(&B)启动服务程序/连接

7、到服务器IDC_DISCONNECT关闭(&D)关闭服务程序/断开和服务器的连接IDC_SELECT_FILE选择文件(&F)选择要发送的文件IDC_STOP_TRANSFERS停止传输(&T)停止文件的传输IDCANCEL退出(&Q)退出程序三.几个辅助类的介绍1.CMessage类在前面我们说过程序传送控制信息的时候采用的是CSocket类的串行化技术,这样一来使得发送和接收网络数据就像普通的数据串行化一样简单。因此封装一个可以串行化的消息类是必要的,后面我们将会看到有了这个类,消息的发送和接收只需使用流操作符对缓冲

8、区进行存取就可以了。根据程序的需要,消息类CMessage的定义如下:classCMessage:publicCObject{public:voidSerialize(CArchive&ar);CMessage();CMessage(intnType);CMessage(intnType,CStringstrFile

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。