基于VC的传输文件集成软件的设计与实现
2019-10-11周超刘传琦
周超 刘传琦
摘 要:文章设计了一款使用MFC作为类库、前台采用Visual C++进行开发的传输文件集成软件。该软件实现了以文本传输为核心,将互联网传输、USB传输、串行口传输3种传输方式高度集成。具有适应性强、能够提高文件传输效率、加强文件传输的保密性等优点。
关键词:Socket;微软基础类库;传输控制协议/互联网协议
随着信息技术的进步,文件的传输功能发挥着越来越重要的作用。为了更加高效、安全地传输文件,本文设计了一款基于VC的传输文件集成软件,并且对相关模块进行了编程实现,最后对软件进行了测试,取得了良好的效果。
1 软件设计及实现
1.1 窗口的设计
首先,创建微软基础类库(Microsoft Foundation Classes,MFC)工程,其中,应用程序类型选择和MFC库的选择是两个比较重要的步骤。对于应用程序类型的选项有4类,分别是“单个文档”“多个文档”“基于对话框”“多个顶层文档”。
其次,进行MFC库的选择,该选项有两类,分别是“在共享DLL中使用MFC”与“在静态库中使用MFC”。在开发阶段的程序中选择“在静态库中使用MFC”,其大小以及效率都不用在意,编译后的程序能直接容纳调取MFC部分的库,通过选项生成的程序可执行文件几乎能在所有的窗口上执行,运行时不需要DLL[1]。
再次,进行“控件的选择”,这是根据软件的需要来进行筛选的,本软件因需要选择了5种控件,其名称和功能分别如下:(1)Text Control:可以显示文本。(2)Combo-box Control:提供下拉选项。(3)Group-box Control:把若干个控件包含在一个组里。(4)Edit Control:编辑文本框,用户可填入信息。(5)Button Control:按钮。给控件命名采用匈牙利命名法,控件名即是ID。
最后,进行窗口应用程序的设计,其中,一个相当重要的元素就是窗口,主窗口在一个Windows Application至少要有一个,窗口显示在屏幕上就是一块矩形区域,是用户与Windows Application交互的接口,接收用户的输入以及显示输出皆能通过Windows进行。本设计具有菜单、光标、图标、背景色等选项。在创建Windows时设定其类型和大小,在设计Windows Class时指定光标、图标和背景。在窗口应用程序设计中还包括字体设计、颜色设计、图标设计等。其中,字体设计中使用SetFont函数可以更改指定控件的字体,该函数实现把WM_SETFONT消息发送到与字体对象对应的字体句柄的控件。颜色设计中,首先,调用GetClientRect,用此方法检索控制客户端区域的大小,然后调用参数lpRect,指定一个指向由RECT组成的指针。在图标设计中,使用了重要函数OnPaint,其是CWnd的类成员,也是WM_PAINT消息的一种消息处理函数,用来负责响应该消息。
1.2 发送与接收功能的设计与实现
首先,实现CComPort类,可用于通过端口号来打开端口、设置端口、发送数据、接收数据等。编写打开端口逻辑程序时,CreateFile函数功能多样,可打开普通文件、设备、串口。编写端口配置逻辑程序时,相关重要函数功能如下:(1)SetupComm函数,指定通信设备的通信参数能被其初始化。(2)PurgeComm函数的作用是清空缓冲区。编写关闭端口号逻辑程序时,CloseHandle函数涵盖了同步对象、文件、文件映射、线程、进程以及安全等。编写接收数据逻辑程序时,GetLastError函数返回的值,通过在应用程序接口函数中调用SetLastError或SetLastErrorEx进行设置。编写发送数据逻辑程序时,应用GetBuffer函数,其功能是获取指定缓冲区里的内容大小的指针并进行修改[2]。
本软件可实现Socket,USB与ComRS232数据的发送与接收。第一步:确定发送方式,若错误,则提示未选择发送方式再退出;若正确,则跳转到发送方式。第二步:选择一种发送方式,例如选择Socket,判断参数是否存在,若否,则提示错误再退出;若是,则建立线程,如图1所示。
由于3种传输方式实现发送与接收的逻辑相似,以下将用Socket作例子进行详细叙述。Socket是一组接口,也是应用层与TCP/IP族通信的中间软件抽象层,在设计模式中起到门面作用,繁杂的互联网协议被它隐藏在套接口之后,对用户而言,一组简单的接口就是全部,为符合指定的协议,应让Socket去组织数据。首先,服务器端应先初始化Socket,再与Port(端口)绑定;其次,对Port进行监听;再次,调用accept阻塞;最后,等待与Client(客户端)连接。若此时Client有初始化一个Socket并连接服务器,若连接成功,Client与服务器端成功建立连接。当Client发送数据请求之后,服务器端则会接收到并处理该请求,再回应数据发送给Client,然后会讀取该数据,最后关闭连接,一次交互就此结束。对于本软件,第一步:当文件发送之后,发送端需要接收反馈信息,若没有接收到反馈信息,则需要判断是否达到发送上限,若没有则重新打包发送,若有则退出。第二步:若接收到反馈信息,则需要判断反馈信息是否正确,若错误则退出。第三步:若正确则判断发送次数是否达到3次,若达到3次则退出,若没有则重新打包发送,如图2所示。
2 软件功能测试
2.1 Socket功能测试
在进行Socket传输功能调试时,使用NetAssist应用程序。在发送区和接收区均设置选择“十六进制显示”,输入发送内容。更改协议类型后,进行连接。
2.2 USB與串口功能测试
在进行USB或者串口传输功能调试时,使用UartAssist应用程序。在发送和接收区设置选择“十六进制显示”,输入发送内容,点发送即可,如图3所示。
2.3 软件的图形界面测试
在VS软件里,打开所编写保存的程序包,然后在【视图】里找到【其他窗口】,打开【资源视图】,在FileTransport.rc文件夹里,找到Diolog文件打开,找到IDD_FILE_TRANSPORT_DIALOG打开,即可得到图形化界面,如图4所示。然后按F5进行运行即可。可以看见传输方式的下拉菜单有3种选项,Send与Recv只读,但可垂直滚动,其他控件功能皆完成,软件成功实现运行。
[参考文献]
[1]吴焱.Visual C++程序设计基础[M].重庆:重庆大学出版社,2004.
[2]丁展.Visual C++ 网络通信编程实用案例精选[M].北京:人民邮电出版社,2004.
Design and implementation of transmission file integration software based on VC
Zhou Chao, Liu Chuanqi
(School of Electrical Engineering, Tongling University, Tongling 244061, China)
Abstract:This paper designs a transmission file integration software which uses MFC as class library and Visual C as foreground. The software takes text transmission as the core and integrates Internet transmission, USB transmission and serial port transmission. It has the advantages of strong adaptability, can improve the efficiency of file transfer, strengthen the confidentiality of file transfer and so on.
Key words:Socket; microsoft basic class library; transmission control protocol/internet protocol