完成端口技术在学生管理系统中的应用.doc

上传人:gs****r 文档编号:1588018 上传时间:2019-03-07 格式:DOC 页数:5 大小:105.50KB
下载 相关 举报
完成端口技术在学生管理系统中的应用.doc_第1页
第1页 / 共5页
完成端口技术在学生管理系统中的应用.doc_第2页
第2页 / 共5页
完成端口技术在学生管理系统中的应用.doc_第3页
第3页 / 共5页
完成端口技术在学生管理系统中的应用.doc_第4页
第4页 / 共5页
完成端口技术在学生管理系统中的应用.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、1完成端口技术在学生管理系统中的应用【摘要】 当前,各大学、学院都非常重视学生管理工作,以学生为根本的教育理念已经渐渐成为教育界的广泛同识。学生管理系统解决了学生管理工作繁琐、量大、杂乱的问题。在设计和开发管理系统的时候如何解决大规模并发问题成为一个难点,而 Windows 完成端口技术(IOCP)为此问题提供了很好的解决方案。 【关键词】 学生管理;系统;完成端口;IOCP;重叠 IO 学生管理系统大多采用 C/S 结构设计模式。在日常生活中,对于一个中等规模的学院来说,同时达到千人以上在线的情况经常发生,如果采用一个用户一个线程的设计方式那将造成 CPU 在这成千上万的线程间进行切换,后果

2、不可想象。Windows IOCP 完成端口技术则完全颠覆传统设计模式,它在将并行的线程数量设计上限。目前,IOCP 完成端口是Windows 下性能最好的 I/O 模型,同时它也是最复杂的内核对象。它避免了大量用户并发时原有模型采用的方式,极大的提高了程序的并行处理能力。 1 系统设计 系统采用 B/S 结构设计,主要分为登录、用户管理、信息管理、学生处分管理、评分管理等大模块。服务器端应用完成端口技术,客户端2采用普通的 Socket 连接方式。服务器端数据库系统采用Sqlserver2000。系统通过 IOCP 服务器来访问数据库系统,用户通过客户端软件进行 Socket 短连接到 IO

3、CP 服务器,进行数据操作。系统结构图如图 1 所示。 图 1 系统结构图 2 完成端口技术的应用 2.1 完成端口的优点 完成端口会充分利用 Windows 内核来进行 I/O 的调度,是 C/S 通信模式中性能最好的网络通信模型。使用“同步”的方式操作会阻塞住来自同一个线程的任何其他操作,所以要写高性能的服务器程序,通信一定要是异步的。微软提出完成端口模型的初衷,就是为了解决这种“onethreadperclient”的缺点的,它充分利用内核对象的调度,只使用少量的几个线程来处理和客户端的所有通信,消除了无谓的线程上下文切换,最大限度的提高了网络通信的性能。 2.2 使用完成端口的流程 (

4、1)调用 CreateIoCompletionPort 函数创建完成端口,将返回句柄保存。 (2)根据系统中处理器个数,创建工作者(Worker)线程,用来处理和客户端的通信请求。Worker 线程个数:N=2*处理器个数+2。 (3)接收 Socket 连接,两种实现方式:一是启动一个独立的线程,专门用来 accept 接收客户端的连接请求;二是用性能优异的异步AcceptEx 请求。 3(4)当客户端连入,调用 CreateIoCompletionPort 函数,这里不用新建完成端口,而是把新连入的 socket(前面创建设备句柄) ,与 1)完成端口绑定在一起。至此,完成端口的相关部署工

5、作完成。 (5)客户端接入后,在这个 Socket 上提交一个网络请求,WSARecv负责处理请求,执行接收数据的操作。 (6)此时,其它几个 Worker 线程分别执行 4、5 步操作。 2.3 系统实现 (1)创建完成端口 HANDLE m_hIOCompletionPort = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, 0) ; (2)根据系统中 CPU 核心的数量建立对应的 Worker 线程 SYSTEM_INFO si; GetSystemInfo(&si) ; int m_nProcessors = si.dwNu

6、mberOfProcessors; m_phWorkerThreadsi = :CreateThread (0, 0, _WorkerThread, ) ; (3)创建用于监听的 Socket,绑定到完成端口上,然后开始在指定的端口上监听连接请求 SOCKET m_sockListen = WSASocket(AF_INET, SOCK_STREAM, 0, NULL, 0, WSA_FLAG_OVERLAPPED) ; If(SOCKET_ERROR=bind(m_sockListen, (struct sockaddr*)&ServerAddress, sizeof(ServerAddre

7、ss) ) ) ; 4listen(m_sockListen,SOMAXCONN) ) ; (4)在这个监听 Socket 上投递 AcceptEx 请求 GUID GuidAcceptEx = WSAID_ACCEPTEX; WSAIoctl(m_pListenContextm_Socket, SIO_GET_EXTENSI ON_FUNCTION_POINTER, &GuidAcceptEx,sizeof(GuidAcceptEx) , &m_lpfnAcceptEx, sizeof(m_lpfnAcceptEx) , &dwBytes, NULL,NULL) ; (5)Worker 线程

8、的工作 BOOL bReturn = GetQueuedCompletionStatus(pIOCPModelm_hIOCompletionPort, (LPDWORD)&lpContext,&pOverlapped,INFINITE ) ; (6)收到 Accept 通知时执行_DoAccept (7)当收到 Recv 通知时, _DoRecv 3 界面展示 3.1 用户登录页面(图 2) 图 2 登陆界面 3.2 系统主界面(图 3) 图 3 系统主界面 参考文献: 1郭峰.深入浅出设计模式.北京:中国铁道出版社,2013 2http:/ 53孙鑫.VC+深入详解.北京:电子工业出版社,2012

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。