网络远程通信和控制程序设计_毕业设计论文(编辑修改稿)内容摘要:

三方 )的编程语言来进行对Windows 下应用程序的开发 ,使这些被开发出来的应用程序能在Windows 下运行 ,比如 VB,VC++,JAVA,Delhpi 编程语言 函数 本质上全部源于 API,因此用它们开发出来的应用程序都能工作在Windows 的 消息机 制 和绘图里 ,遵守 Windows 作为一个 操作系统 的内部实现 ,这其实也是一种必要 ,微软如果不提供 API,这个世上对Windows 编程的工作就不会存在 ,微软的产品就会迅速从时尚变成垃圾 ,上面说到 MFC 是微软对 API 函数的专用 C++封装 ,这种结合一方面让用户使用微软的专业 C++ SDK 来进行 Windows 下应用程序的开发变得容易 ,因为 MFC 是对 API 的封装 ,微软做了大量的工作 ,隐藏了好多程序开发人员在 Windows 下用 C++ amp。 MFC 编制软件时的大量内节 ,如应用程序实现消息的处理 ,设备环境绘图 ,这种结合是以方便为目的的 ,必定要付出一定代价 (这是微软的一向作网络远程通信与控制程序设计 6 风 ),因此就造成了 MFC 对类封装中 的一定程度的的冗余和迂回 ,但这是可以接受的。 MFC不只是一个功能单纯的 界面 开发系统 ,它提供的类绝大部分用来进行界面开发 ,关联一个窗口的动作 ,但它提供的类中有好多类不与一个窗口关联 ,即类的作用不是一个界面类 ,不实现对一个窗口对象的控制 (如创建 ,销毁 ),而是一些在 Windows(用 MFC编写的程序绝大部分都在 Windows 中运行 )中实现内部处理的类 ,如 数据库 的管理类等 ,学习中最应花费时间的是消息和设备环境 ,对 C++和 MFC 的学习中最难的部分是指针 ,C++面向对象程序设计的其它部分 ,如数据类型 ,流程控制 都不难 ,建议学习 数据结构 C++版。 MFC 是微软封装了的 API。 windows 作为一个提供功能强大的应用程序接口 编程的操作系统,的确方便了许多 程序员 ,传统的win32 开发(直接使用 windows 的 接口函数 API)对于程序员来说非常的困难,因为, API 函数实在太多了,而且名称很乱,从零构架一个窗口动辄就是上百行的代码。 MFC 是面向对象程序设计与Application framework 的完美结合,他将传统的 API 进行了分类封装,并且为 使用者 创建 程序的一般框架。 应用程序框架的一种定义是 提供一般应用程序需要的全部面向 对象软件组件的集成集合。 C++流行的一个原因是它可以用类库扩充。 类库是可在应用程序中使用的有关 C++类的集合。 应用程序框架是类库的超集。 一般的类库只是一种孤立的类的集合,用来嵌入在任何程序中,但是,应用程序框架却定义了程序的结构。 自从 MFC 库发布以来, MFC 已经成为主要的Windows 类库。 使用 MFC 类库构建应用程序具有以下优点。  MFC 库是 C++的 Microsoft Windows API。  应用程序框架生成的应用程序使用了标准的结构,具有标准化的用户接口,这对具有标准用户界面的 Win32 程序来说,可 以极大的减轻程序员的负担,使程序员不必过多地考虑界面,可把主要精力放在程序设计上,以提高程序设计的效率。  使用应用程序框架的应用程序不仅小,而且运行速度快,具有很大的灵活性。 MFC 封装了 Win32 SDK 中的几乎所有函数,网络远程通信与控制程序设计 7 能实现 Win32 系统的任何功能。  MFC 框架降低了编码的复杂性。  MFC 库应用程序框架有丰富的特性,如: Windows API 的 C++接口、通用的(非 Windows 所特有的)类、 “共用根对象 ”类层次结构、流线式多文档界面( MDI)应用程序支持等。  强大的功能。 除封装了大部分的 Win32 SDK 函数外, MFC 还提供了应用程序本身的数据和操作及 ActiveX、 OLE、 Inter、WinSock、 DAO( Data Access Objects)、 ODBC( Open DataBase Connectivity)等操作类。 MFC 框架的核心是文档 /视图结构( DocumentView Architecture),这是一个很好用、但又往往较难以入门的功能。 简单的说,文档 /视图结构就是将数据和对数据的观察或数据的表现(显示)相分离。 文档仅处理数据的实际读、写操作,视图则是显示和处理数据的窗口,视图可以操作文档中的数据。 MFC的消息映射 在使用 Visual C++进行 Win32 程序设计时,消息映射是一个非常重要的概念。 Windows 应用程序是消息驱动的,应用程序不能直接得到用户所做的操作,如鼠标按键、键盘输入和窗口移动等。 这些操作由操作系统管理,操作系统检测到操作事件后,便向相关的应用程序发送消息,应用程序响应这些消息来完成用户的操作。 消息 Windows 中的消息是操作系统与应用程序之间、应用程序与应用程序之间、应用程序各对象之间相互控制与传递信息的方式。 消息的基本格式如下: Message wParam lParam Message 是消息名称; wParam是与消息相关的 Word 型参数; lParam是与消息相关的 Long 型参数。 消息主要有以下 3 类。 Windows 系统消息: Windows 系统向窗口发送的消息,由窗口( Window )或视图( View )进行响应处理。 这类消息包括除WM_COMMAND 消息之外的名称以 WM_开始的其他消息。 网络远程通信与控制程序设计 8 控制通知消息:控制或子窗口传给父窗口的 WM_COMMAND 通知的消息。 命令消息:在响应用户接口操作时,将产生 WM_COMMAND 命令消息。 其参数指 定了用户接口的标识号,如菜单项和按钮等 ID 号。 消息映射过程 在使用 AppWizard 创建应用程序时, MFC 应用程序框架设置了相应的消息处理函数来响应消息,以完成相应的操作。 消息处理函数是某些类(通常是窗口类)的成员函数和程序员在其中编写响应消息时应进行操作的代码。 框架将消息和它们的处理函数连接起来就是消息映射。 消息映射使应用程序在接收到消息时调用对应的消息处理函数来响应和处理消息。 ClassWizard 在创建新类时将为其创建一个消息映射,并为每个类能响应的消息和命令增加对应的处理函数。 在源代码 中,消息映射开始于 BEGIN_MESSAGE_MAP 宏,结束于 END_MESSAGE_MAP 宏,中间由一系列预定义的被称为 “ 条目宏 ” 的宏组成。 其基本格式如下: BEGIN_MESSAGE_MAP (classname, parentclassname) //{{AFX_MSG_MAP (classname) 条目宏 1 条目宏 2 条目宏 3 ………… //}}AFX_MSG_MAP END_MESSAGE_MAP () 其中 classname 为拥有消息映射的当前类名, parentclassname 为当前类 的父类名。 条目宏定义了类所处理的消息与其对应的函数。 常用的条目宏类型如表 所示。 Windows 消息的处理函数在 CWnd 类中进行了预定义,类库以消息名为基础定义这些处理函数的名称,且 MFC 要求所有消息处理函数声明为 afx_msg 类型。 例如,消息 WM_PAINT 的处理函数在 CWnd 类中的声明如下: afx_msg void OnPaint()。 网络远程通信与控制程序设计 9 表 消息映射条目宏 消息类型 宏格式 说明 Windows消息 ON_WM_XXXX WM_XXXX为Windows 消息名 命令 ON_COMMAND(ID,Function) ID 为命令标识号, Function 为处理函数名 更新命令 ON_UPDATE_COMMAND_UI(ID,Function) ID 为命令标识号, Function 为处理函数名 控制通知 ON_XXXX(ID,Function) ID 为控制标识号, Function 为处理函数名 用户定义消息 ON_MESSAGE(ID,Function) ID 为消息标识号, Function 为处理函数名 用户注册消息 ON_REGISTERED_MESSAGE(ID,Function) ID 为 消息标识号, Function 为处理函数名 通过 ClassWizard 在派生类中用同样的原型定义处理函数并为该函数生成消息映射条目,然后由程序员编写处理函数代码,并在派生类中覆盖了其父类的消息处理函数。 在有些情况下,必须在派生类的消息处理函数中调用其父类的消息处理函数,使 Windows 和基类能对消息进行处理。 ClassWizard 将在生成的处理函数中建议是否应调用父类的消息处理函数及调用的次序。 除此之外,用户定义和注册的消息、命令和控制通知都没有默认的处理函数,需要在定义时声明,一般根据其 ID名称来为函数 命名。 网络远程通信与控制程序设计 10 系统架构的模式 C/S 结构,即 Client/Server(客户机 /服务器 )结构, 软件系统体系结构,通过将任 务 合理分配到 Client 端和 Server 端,降低了系统的通讯开销,可以充分利用两端硬件环境的优势。 C/S 结构模式 Client/Server 结构,它的发展经历了两个阶段:从两层结构到三层结构。 两层结构, 它由两部分构成 , 前端是客户机,通常是 PC,主要完成用户界面显示,接受数据输入,校验数据有效性,向后台数据库发请求,接受返回结果,处理应用逻辑;后端是服务器,运行 DBMS,提 供数据库的查询和管理。 应用逻辑主要在前端,如在后端则是存储过程的形式。 三层结构 则 利用中间件将应用分为表示层、业务逻辑层和数据存储层三个不同的处理层次。 三个层次的划分是从逻辑上来分的,具体的物理分法可以有多种组合。 基于三层结构的应用系统不但具备了大型机系统稳定、安全和处理能力高等特性,同时拥有开放系统成本低、可扩展性强、开发周期短等优点。 而中间件作为构造三层结构应用系统的基础平台,提供了以下主要功能:负责客户机与服务器间、服务器间与服务器间的联接和通讯;实现应用与数据库的高效连接;提供一个三层结构应用的开发 、运行、部署和管理的平台。 TCP C/S 通信原理 TCP Client/Server 的通信原理如图 所示,服务器端首先监听一个固定端口,客户端再连接到服务端,此时服务端执行 Accept 操作,以接受客户端的连接。 此时连接创建成功,则进行数据传输,待数据传输完毕,服务端和客户端就断开连接。 网络远程通信与控制程序设计 11 图 Client/Server 的 通信流程 C/S 结构的优点 Client/Server 技术在目前程序开发中得到了广泛的应用,这种技 术的优点在于它将处理工作按照一定的比例分配到客户端和服务器上去执行,这样减少了网络传输的工作量,从而合理地利用了资源,提高了应用程序开发的效率。 由于客户端实现与服务器的直接相连,没有中间环节,因此响应速度快。 API HOOK 技术简介 Hook 是 Windows 中提供的一种用以替换 DOS 下 “ 中断 ” 的系统机制,中文译为 “ 挂钩 ” 或 “ 钩子 ”。 在对特定的系统事件进行 hook 后,一旦发生已 hook 事件,对该事件进行 hook 的程序就监听 Listen() Server 端 Client 端 创建 Socket() 接受 Accept() 数据传输Send() Receive() 断开 Close() 连接 Connect() 创建 Socket() 数据传输Send() Receive() 断开 Close() 网络远程通信与控制程序设计 12 会受到系统的通知,这时程序就能在第一时间对该事件做出响应。 钩子实际上是一个处理消息 的程序段,通过系统调用,把它挂入系统。 每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。 这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。 API HOOK 技术是一种用于改变 API 执行结果的技术, Microsoft 自身也在 Windows 操作系统里面使用了这个技术,如 Windows 兼容模式等。 API HOOK 技术并不是计算机病毒专有技术,但是计算机病毒经常使用这个技术来达到隐藏自己的目的。 在 windows 系统下 编程,应该会接触到 api 函数的使用,常用的 API函数大概有 2020 个左右。 今天随着控件, stl 等高效编程技术的出现, api 的使用概率在普通的用户程序上就变得越来越小了。 当诸如控件这些现成的手段不能实现的功能时,我们还需要借助API。 最初有些人对某些 api 函数的功能不太满意,就产生了如何修改这些 api,使之更好的服务于程序的想法,。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。