生产实习报告

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.1.2 MFC 程序设计实例
由于一个对象可以是消息的接收者,同时也可能是消息的发送者,所发送的消 息与接收到的消息也可以是相同的消息,而有些消息的发出时间是无法预知的(比 如关于键盘的消息),因此应用程序的执行顺序是无法预知的。
但是 MFC 提供了函数架构,我们不必去考虑程序界面及传输代码的编写,而只 需要考虑根据相应的触发对象,自己的程序在触发条件下如何运行并输出相应结
-3-
电子科技大学生产实习报告
果,这都是明确而可操作的。 在 Windows 系统中,程序的设计围绕事件驱动来进行。当对象有相关的事件发
生时(如按下鼠标键),对象产生一条特定的标识事件发生的消息,消息被送入消息 队列,或不进入队列而直接发送给处理对象,主程序负责组织消息队列,将消息发送 给相应的处理程序,使相应的处理程序执行相应的动作,做完相应的处理后将控制 权交还给主程序。
电子科技大学 通信与信息工程学院
生 产 实 习
学号: 2801203008
姓名:
李金明
指导教师:
徐世中
电子科技大学通信与信息工程学院
学生姓名 生产实习课题 生产实习单位
指导教师
指导教师评语:
生产实习考核表
学号
专业
职称
指导老师(签名):
实习成绩(满分 50 分):分
论文成绩(满分 50 分):分
生产实习总成绩: 分
三、生产实习报告内容
附于后页。
II
摘要
事件驱动机制与通信程序实现
学生姓名: 李金明
学号:2801203008 指导老师:徐世中
摘要 在持续事务管理过程中,事件驱动跟随当前时间点上出现的事件,调动可用资源,执
行相关任务,使不断出现的问题得以解决,防止事务堆积。事件驱动编程在计算机程序设计、 公共关系、经济活动等领域均有应用。由于 Windows 本身是基于“事件驱动”模型的,因而在 Windows 操作系统下实现应用程序框架有相当的便利。本论文主要从以上两个方面讨论事件驱 动机制在通信程序里的应用,并在最后举例说明具有事件驱动特点的 select 机制、多线程实 现、非阻塞接口实现。
1.2 事件驱动机制在通信中的运用
事件驱动为广大的程序员所熟悉,其最为人津津乐道的是在图形化界面编程中
-1-
电子科技大学生产实习报告
的应用。事实上,在网络编程中事件驱动也被广泛使用,并大规模部署在高连接数 高吞吐量的服务器程序中,如 HTTP 服务器程序、ftp 服务器程序等。相比于传统 的网络编程方式,事件驱动能够极大的降低资源占用,增大服务接待能力,并提高 网络传输效率。
每当用户进行某种操作,比如鼠标单击或键盘按键,就会触发相应的事件。而 事件是以消息的方式通知 Windows 应用程序的。一旦应用程序获得某条消息,就根 据消息映射表查找相应消息的响应函数的入口地址,调用该函数处理消息,完成用 户预期的功能。
在 Windows 操作系统中,应用程序主要以窗口的形式存在。窗口是一个可视的 人机交互界面,用来接收各种事件,如用户键盘/鼠标事件、外设的请求事件、定 时器的请求事件、信号量的请求事件等。因此,它也就成为应用程序控制消息的发 送端和接收端。即 Windows 应用程序是围绕窗口进行的,窗口不仅提供了可视化的 应用程序的界面,也是 Windows 消息的产生和响应的地方。
服务器端长期运行,连接客户端多,处理数据量大,在设计支持高并发请求的 服务器时,我们可以采用事件驱动机制来获得吞吐量的潜力。当然,事件驱动模式 可以是很多种,多线程的服务器模型、使用非阻塞接口的服务器模型、利用 select() 接口实现的基于事件驱动的服务器模型,和使用 libev 事件驱动库的服务器模型等 都能达到设计要求。
关键词 事件驱动机制;通信程序;select;多线程;非阻塞接口
ABSTRACT In the management process of continuous affairs, event-driven programs
mobilize the available resources withappeared events to execute related tasks,which make constantly problems solved, avoiding affairs’ accumulation. In the fields of computer programming, public relations and economic activities, event-driven programming framework is wildly used. Because WindowsOS is based on "event driven" model,it is quite convenientto implement the application framework in the Windows OS environment. This paper mainly discusses the two aspects described above and explainsapplicationof event-driven mechanismin communication program. In the end event-driven selectedmechanism 、 complement of multithread and complement with non blocking interface will be discussed.
消息的产生是由于相应的事件被触发;消息的发送以队列形式进行;消息响应 遵循一定的顺序。MFC 类库为这种消息响应机制提供了完整的处理功能。MFC 类库 中的很多类都具有处理相应消息的功能。在面向过程的程序设计方式中,对外设, 比如鼠标、键盘等的控制是通过轮询方式进行,即分别定时查询这些设备的输入请 求来完成的。而在 Windows 环境中,这些控制是通过消息机制完成的。因此,Windows 也被称为“基于事件驱动的、消息机制的”操作系统。消息机制是 Windows 能进行 多任务并发处理的基础,它保证了 Windows 下同时运行的程序能够协同作业。
其实在我们所接触到的网络通信软件设计当中,我们最常见也是最简单的是一 问一答的客户/服务器模式。通信双方在软件不可能完全相同,他们可能各有不同 的流程,完成不同的要求,在网络通信上,又可能分别为面向连接和非面向连接等 等,所以在框架设计与内部具体流程上,我们应该根据具体要求做出折中选择。
客户端要随时提出或者终止通信服务,在一个客户端我们只连接一个服务器 时,为增加可控性,我们可能同时涉及地址与端口设置,信息的收发与显示等服务 要求,同时后台程序又要涉及收发不同步等等要求。如果我们用 MFC 来设计的话, 可以建立不同按钮,代表不同的事件触发,比如当输入地址与端口后按下确定,就 可触发客户端套接字建立并与服务器连接;同样,当需要收发同步时可以利用 select 函数产生触发事件,使流线型代码运行直观上达到同步运行的效果等。
实习单位(盖章):
I
一、实习目的和任务
学习网络理论,并通过网络编程验证理论和深入探讨,同时掌握网络编程技术 及文档的编写,积累经验,培养独立思考和实际动手能力,加深对本专业的了解。
二、实习内容和要求
1、查询文档,了解软件编程中事件触发机制原理 2、了解事件触发机制在网络编程中的运用及作用 3、根据实际要求,编写程序计划,完成各种类型流程图编写 3、根据编写基于事件触发机制的通信编程 4、对比不同基于事件触发机制的不同实现方法并总结,完成论文
2.1 Windows 事件驱动程序设计
Windows 事件驱动其实是对用户事件的处理,用的是回调函数的方式,这种就 是事件驱动。在 MFC 设计中,将界面设计与核心程序独立开来,由外部对象产生事 件触发,并交由后台程序处理,并输出相应结果,对于事件的产生于管理是由 MFC 提供的架构完成的,我们只需要在相应位置填入程序即可。
事件驱动,是一种面向对象的程序的编程方式。 事件驱动程序设计(Event-driven programming)是一种电脑程序设计模型。 这种模型的程序执行流程是由使用者的动作(如鼠标的按键,键盘的按键动作)或 者是由其他程序的讯息来决定的。程序执行的流程是由程序设计师来决定。事件驱 动程序设计这种设计模型是在互动程序(Interactive program)的情况下孕育而 生的。 取代传统上一次等待一个完整的指令然后再做执行的方式,事件驱动程序模型 下的系统,基本上的架构是预先设计一个事件循环所形成的程序,这个事件循环程 序不断地检查目前要处理的资讯,根据要处理的资讯执行一个触发函式进行必要的 处理。其中这个外部资讯可能来自一个目录夹中的档案,可能来自键盘或鼠标的动 作,或者是一个时间事件。 对一个事件驱动(event driven)系统进行程序设计,因此可以视为改写系统 默认触发函式的行为,来符合自己需要的一种动作。输入的事件可以放进事件循环 或者是经由已经注册的中断处理器来与硬件事件互动;而许多的软件系统使用了混 和这两种技术的处理。预先设计好的算法确定了一件事,那就是当他们被需要的时 候,就会在适当的时机被触发。也因此提供了一个模拟中断驱动环境(interrupt driven environment)的软件抽象架构。事件驱动程序设计基本上包含了许多小程 序片段,这些小程序片段被称为事件处理器(event handler)并且被用来回应外 部的事件与分发事件(dispatcher)。通常尚未被事件处理器处理的事件,都会被 系统放在一个称为事件伫列(event queue)的数据结构中,等待被处理。 许多情况下,事件处理器可以自己触发事件,因此也可能形成一个事件串 (event cascade)。 事件驱动程序设计的着重于弹性以及异步化(asynchrony) 上面,并且企图尽可能的 modeless。 图形化使用者接口(GUI)这类程序就是典 型的事件驱动设计方式。 计算机操作系统是事件驱动程序的典型范例。在操作系统的最底层,中断处理 器的动作就像是硬件事件的直接处理器,搭配着 CPU 执行分配事件规则动作。对 软件处理程序而言,基本上操作系统可视为一个事件分配器,传送资料和软件中断 给使用者自己写的软件处理程序。
KEYWORD Expulsion mechanism of incidents ; Communication program ; Select ;
multithread;non blocking interface
IIIwk.baidu.com
1. 事件驱动机制
事件驱动机制与通信程序实现
1.1 事件驱动机制基本简介
总之,事件驱动机制可以实现更为高效和稳定的通信软件,在具体编程中,层 次鲜明,又能方便管理与控制,是较好的编程方式。
2. 事件驱动通信程序设计实例
事件驱动,一般情况下是应用在响应用户事件这种类型的应用程序上,也会应 用在网络传输的应用上面。在程序设计实例里我们主要涉及 Windows 事件驱动程序 与基于 select 的事件驱动程序,这两部分几乎涵盖了大部分的事件驱动应用。
2.1.1 Windows 消息机制
-2-
事件驱动机制与通信程序实现
可以从 Windows 编程来认识事件驱动机制,首先需要进一步了解其消息机制。 在 Windows 应用程序中,事件驱动是围绕着消息的产生和处理展开的,消息是对发 生的事件的描述信息。消息通知程序有关事件的发生。一条消息包含有消息的名字、 标识、消息发生时的一些参数,以及处理这条消息的函数入口指针。
在 Windows 中,应用程序都包含一个消息循环。该消息循环持续反复检测消息 队列,查看是否有用户事件消息,这些用户事件消息包括鼠标移动、单击、双击、 键盘操作和计时器到达等。
事实上,这些事件首先被 Windows 系统接收到。当 Windows 接收到这些事件后, 会产生一些相应的描述事件的消息,并且将这些消息分发到相应的应用程序。应用 程序接到这些消息后,根据不同的消息查询消息映射,调用其相应的消息响应函数, 完成一定的功能与过程。这一系列动作称之为消息响应。
相关文档
最新文档