C/S考试系统程序制作详解

大型作业答辩:C/S考试系统程序制作详解

一、服务器程序

采用了WinSocket32的完成端口模型(I/O completion ports)

WIN32多线程技术

ODBC APIS 进行数据库操作

二、客户端程序

用Win32 API函数构造主窗体和界面元素,如图一所示:


图一 程序组织结构

服务器程序详解

一、完全端口模型(I/O completion ports)是迄今为止最为复杂的一种I/O模型,假如一个程序需要管理为数众多的套接字,那么采用这种模型往往可以达到最佳的系统性能,不幸的是该模型只适用与WIN2000和WINNT操作系统,因其设计的复杂性,只有在你的应用程序需要同时管理数百乃至上千个套接字的时候,而且希望随着系统内安装的CPU的数量增多,应用程序的性能也可以线性的提升,才考虑采用“完成端口模型”(WEB服务器便是这方面的典型例子)。I/O completion ports是唯一适用于高负载服务器的一个技术,它利用一些线程帮助平衡“I/O请求”所引起的负载,这样的构架特别适合应用在SMP系统中产生所谓的“Scalable”服务器,(Scalable是指能够籍着增加RAM或磁盘空间,CPU个数而提升应用程序效能的一种系统)。

二、完全端口模型的具体实现

为了使用“完成端口模型”,我产生了一堆线程在端口上等待,线程数量=CPU个数x2+2,我将每个客户端产生的文件句柄与I/O completion ports端口相关联,建立了这种关系之后,任何客户端发出操作请求,便会导致I/O completion packet被送到“完成端口”去,这个步骤是操作系统完成的,为了回应I/O completion packet,我让I/O completion释放一个等待中的线程,如果目前没有线程正在等待,它不会为这个客户端N产生新的线程, 当作用中的线程处理完相应客户端的“overlapped I/O”后,将返回I/O completion端口进行等待,客户端N这时才能够被处理,这样就保证了我的Workers线程总是保持一个稳定的数量(CPU个数x2+2)。如图二所示:


图二 完全端口线程模型示意图

时间: 2024-12-14 07:19:34

C/S考试系统程序制作详解的相关文章

Linux桌面系统字体配置详解(二)

字体配置实战 下面,将以Fedora 20为例,自己动手将它配置为正确的显示效果.目前,在Linux系统上配置字体的工具是Fontconfig. 为什么是Fontconfig 感谢这个时代,曾经混乱不堪的字体配置方法终于被Fontconfig一统江湖.在Linux中,字体配置曾经各自为政.混乱不堪,XServer.Xft.GTK.GTK2.QT等等各自采用不同的配置手段,字体引擎也有Type1.FreeType等.目前,可以认为在Linux系统中只需要配置FontConfig即可. XOrg的官

WPS演示倒计时制作详解之滚动条

倒计时制作详解(一)滚动条 倒计时在教学和演示中应用比较广范,制作方法各有特点,我将利用图文教程的方式,详细展示常见倒计时的几种做法,这是其中做法之一. 打开wps视频模板,在第一页第一个文本框中修改题目"倒计时",在第二个文本框中题目修改为"制作人:北方",字体微软雅黑,字号等项默认. 图- 1 在幻灯片任务窗格中,单击第一页后面,出现一条横向闪动的细线,通过按键盘上的回车键,新建一张幻灯片.在其中第一个文本框中修改题目"倒计时一",设置对齐方

无惊喜有改变 Android 4.1.2系统更新内容详解

Android 4.1.2系统更新内容详解(1)本周谷歌刚刚发布了最新版本的Android 4.1.2系统,我们也在第一时间上手试用并为大家带来了这篇介绍文章.如果你想要知道4.1.2中的新变化那你来对地方了.说实话其实可供介绍的方面并不多,从版本号上仅0.0.1的的变化就可以看出这次并不是一次重大更新.不过我依然仔细遍历了所有164个系统软件,下面就是所有能为大家介绍的内容.首先,可能大家也都听说过了,就是单手指通知栏展开以及终于学会了旋转的桌面.至于那些有关bug修复的更新内容我就无法测试了

Android系统对话框使用详解(最详细)

在实际应用开发中,用到系统对话框中的情况几乎是没有的.按开发流程来说,UI工程师都会给出每一个弹窗的样式,故而在实际开发中都是自定义弹窗的. 即使用到的地方不多,但是我们也是需要了解并且能熟练的运用它,下面为大家奉上各种系统对话框的实现. 目录 一.系统对话框的几种类型与实现 在项目的实际开发中,用到的系统对话框几乎是没有的.原因大概包含以下几点: 样式过于单一,不能满足大部分实际项目中的需求. 对话框的样式会根据手机系统版本的不同而变化.不能达到统一的样式. 能实现的功能过于简单. 在这里先附

Win 2000系统引导过程详解(2)

过程|详解 表一则列出了在系统引导的不同阶段所引用的文件. 表一 在这里,我们暂不讨论Windows 2000操作系统的内部工作机制,以下通过图文结合的方式,简要给大家说明在这五个阶段,操作系统都在干些什么,那些程序发挥了作用. 第一步,预引导阶段,过程如图二所示,首先包括了系统加电自检,这个过程完成硬件设备的枚举和配置.其次计算机BIOS确定引导设备的位置,加载并运行Master Boot Record(MBR)主引导区内容(如lilo等).然后扫描分区表,定位活动分区,并将活动分区上的引导扇

Flash动态缓冲图片导航制作详解

导航|动态|详解 缓冲公式在制作特效中非常有用,著名的三星导航菜单就用到了此公式.现在许多网站出尽风头,其中缓冲导航是其一大亮点.本文以一德国网站的导航为例,详解缓冲导航的制作.这个效果是我和溶剂共同完成的,他提供坐标的算法,我提供缩放的算法. 本例效果演示 鼠标划过的部分图片会变大 制作思路 图片缩放控制利用缓冲公式设置图片的缩放比例,如果鼠标滑过某图片,放大1.8倍.如果其它图片的序号与此图片的序号相差1,就是此图片两边的图片,放大1.4倍,其它的为原始大小. 图片坐标控制当某图片放大时,相

教程/dreamweaver/提高 表格妙用-线框制作详解(5)

dreamweaver|教程|详解 隔距边框的制作 "隔距边框"在网页中主要用来排列各个栏目或频道的项目列表用的,为了方便大家理解,笔者先把制作完成以后的效果图给大家展示下,如下: 下面是相应的制作过程,(以制作三框隔距为例说明) 首先在网页中插入一个1行3列的表格对象,在插入过程中直接把"Border"设定为0,"CellSpace"设定为2,"CellPad"设定为1,如图 注意:在这里进行设置,同属性板中是完全等效的.

教程/dreamweaver/提高 表格妙用-线框制作详解(3)

dreamweaver|教程|详解 细线边框的制作 细线边框是网页中定位区分内容常用的一种方法,配合特定图片的使用,往往能够达到不错的效果,那么如何制作细线边框呢? 大家都知道,所谓细线边框,大体外观上就是一个简单的1行1列表格,那么我们直接把表格对象的Border值设定为1不就可以了吗?请看下面的制作效果: 同样在网页中指定位置插入一个单行单列的表格,用鼠标单击表格外框的任何一个部位以选中它,在属性板中将"Border"值设定为1,也可以同时将另外的"CellPad&quo

教程/dreamweaver/提高 表格妙用-线框制作详解(2)

dreamweaver|教程|详解 将Width的显示状态从"Percent"更改为代表实际大小的"Pixels",这样避免在窗口放缩时引起的错乱,OK,同时在网页编辑窗口中用鼠标选定表格,属性板如下: 这是默认状态下的表格属性设置,将其中的"Border","CellPad","CellSpace"值全部设定为0. 鼠标在表格内部空点,这时属性板已经自动切换到单元格的属性设置窗口,将单元格的"B