版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 完成端口技術(shù)在學(xué)生管理系統(tǒng)中的應(yīng)用</p><p><b> 【摘要】 </b></p><p> 當(dāng)前,各大學(xué)、學(xué)院都非常重視學(xué)生管理工作,以學(xué)生為根本的教育理念已經(jīng)漸漸成為教育界的廣泛同識(shí)。學(xué)生管理系統(tǒng)解決了學(xué)生管理工作繁瑣、量大、雜亂的問(wèn)題。在設(shè)計(jì)和開(kāi)發(fā)管理系統(tǒng)的時(shí)候如何解決大規(guī)模并發(fā)問(wèn)題成為一個(gè)難點(diǎn),而Windows完成端口技術(shù)(IO
2、CP)為此問(wèn)題提供了很好的解決方案。 </p><p><b> 【關(guān)鍵詞】 </b></p><p> 學(xué)生管理;系統(tǒng);完成端口;IOCP;重疊IO </p><p> 學(xué)生管理系統(tǒng)大多采用C/S結(jié)構(gòu)設(shè)計(jì)模式。在日常生活中,對(duì)于一個(gè)中等規(guī)模的學(xué)院來(lái)說(shuō),同時(shí)達(dá)到千人以上在線的情況經(jīng)常發(fā)生,如果采用一個(gè)用戶一個(gè)線程的設(shè)計(jì)方式那將造成CPU在
3、這成千上萬(wàn)的線程間進(jìn)行切換,后果不可想象。Windows IOCP完成端口技術(shù)則完全顛覆傳統(tǒng)設(shè)計(jì)模式,它在將并行的線程數(shù)量設(shè)計(jì)上限。目前,IOCP完成端口是Windows下性能最好的I/O模型,同時(shí)它也是最復(fù)雜的內(nèi)核對(duì)象。它避免了大量用戶并發(fā)時(shí)原有模型采用的方式,極大的提高了程序的并行處理能力。 </p><p><b> 1系統(tǒng)設(shè)計(jì) </b></p><p>
4、系統(tǒng)采用B/S結(jié)構(gòu)設(shè)計(jì),主要分為登錄、用戶管理、信息管理、學(xué)生處分管理、評(píng)分管理等大模塊。服務(wù)器端應(yīng)用完成端口技術(shù),客戶端采用普通的Socket連接方式。服務(wù)器端數(shù)據(jù)庫(kù)系統(tǒng)采用Sqlserver2000。系統(tǒng)通過(guò)IOCP服務(wù)器來(lái)訪問(wèn)數(shù)據(jù)庫(kù)系統(tǒng),用戶通過(guò)客戶端軟件進(jìn)行Socket短連接到IOCP服務(wù)器,進(jìn)行數(shù)據(jù)操作。系統(tǒng)結(jié)構(gòu)圖如圖1所示。 </p><p><b> 圖1系統(tǒng)結(jié)構(gòu)圖 </b>
5、</p><p> 2完成端口技術(shù)的應(yīng)用 </p><p> 2.1完成端口的優(yōu)點(diǎn) </p><p> 完成端口會(huì)充分利用Windows內(nèi)核來(lái)進(jìn)行I/O的調(diào)度,是C/S通信模式中性能最好的網(wǎng)絡(luò)通信模型。使用“同步”的方式操作會(huì)阻塞住來(lái)自同一個(gè)線程的任何其他操作,所以要寫高性能的服務(wù)器程序,通信一定要是異步的。微軟提出完成端口模型的初衷,就是為了解決這種“one
6、threadperclient”的缺點(diǎn)的,它充分利用內(nèi)核對(duì)象的調(diào)度,只使用少量的幾個(gè)線程來(lái)處理和客戶端的所有通信,消除了無(wú)謂的線程上下文切換,最大限度的提高了網(wǎng)絡(luò)通信的性能。 </p><p> 2.2使用完成端口的流程 </p><p> (1)調(diào)用CreateIoCompletionPort函數(shù)創(chuàng)建完成端口,將返回句柄保存。 </p><p> ?。?)根據(jù)
7、系統(tǒng)中處理器個(gè)數(shù),創(chuàng)建工作者(Worker)線程,用來(lái)處理和客戶端的通信請(qǐng)求。Worker線程個(gè)數(shù):N=2*處理器個(gè)數(shù)+2。 </p><p> ?。?)接收Socket連接,兩種實(shí)現(xiàn)方式:一是啟動(dòng)一個(gè)獨(dú)立的線程,專門用來(lái)accept接收客戶端的連接請(qǐng)求;二是用性能優(yōu)異的異步AcceptEx請(qǐng)求。 </p><p> ?。?)當(dāng)客戶端連入,調(diào)用CreateIoCompletionPort函
8、數(shù),這里不用新建完成端口,而是把新連入的socket(前面創(chuàng)建設(shè)備句柄),與1)完成端口綁定在一起。至此,完成端口的相關(guān)部署工作完成。 </p><p> ?。?)客戶端接入后,在這個(gè)Socket上提交一個(gè)網(wǎng)絡(luò)請(qǐng)求,WSARecv負(fù)責(zé)處理請(qǐng)求,執(zhí)行接收數(shù)據(jù)的操作。 </p><p> ?。?)此時(shí),其它幾個(gè)Worker線程分別執(zhí)行4、5步操作。 </p><p>&
9、lt;b> 2.3系統(tǒng)實(shí)現(xiàn) </b></p><p> (1)創(chuàng)建完成端口 </p><p> HANDLE m_hIOCompletionPort = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, 0); </p><p> (2)根據(jù)系統(tǒng)中CPU核心的數(shù)量建立對(duì)應(yīng)的Worke
10、r線程 </p><p> SYSTEM_INFO si; </p><p> GetSystemInfo(&si) ; </p><p> int m_nProcessors = si.dwNumberOfProcessors; </p><p> m_phWorkerThreads[i] = ::CreateThread(
11、0, 0, _WorkerThread, …) ; </p><p> ?。?)創(chuàng)建用于監(jiān)聽(tīng)的Socket,綁定到完成端口上,然后開(kāi)始在指定的端口上監(jiān)聽(tīng)連接請(qǐng)求 </p><p> SOCKET m_sockListen = WSASocket(AF_INET, SOCK_STREAM, 0, NULL, 0, WSA_FLAG_OVERLAPPED); </p><
12、p> If(SOCKET_ERROR==bind(m_sockListen,(struct sockaddr*)&ServerAddress, sizeof(ServerAddress))); </p><p> listen(m_sockListen,SOMAXCONN)) ; </p><p> ?。?)在這個(gè)監(jiān)聽(tīng)Socket上投遞AcceptEx請(qǐng)求 </p&
13、gt;<p> GUID GuidAcceptEx = WSAID_ACCEPTEX; WSAIoctl(m_pListenContext>m_Socket, SIO_GET_EXTENSI ON_FUNCTION_POINTER, &GuidAcceptEx,sizeof(GuidAcceptEx), &m_lpfnAcceptEx, sizeof(m_lpfnAcceptEx) , &d
14、wBytes, NULL,NULL) ; </p><p> ?。?)Worker線程的工作 </p><p> BOOL bReturn = GetQueuedCompletionStatus(pIOCPModel>m_hIOCompletionPort, </p><p> (LPDWORD)&lpContext,&pOverlappe
15、d,INFINITE ); </p><p> ?。?)收到Accept通知時(shí)執(zhí)行_DoAccept </p><p> (7)當(dāng)收到Recv通知時(shí), _DoRecv </p><p><b> 3界面展示 </b></p><p> 3.1用戶登錄頁(yè)面(圖2) </p><p><b
16、> 圖2登陸界面 </b></p><p> 3.2系統(tǒng)主界面(圖3) </p><p><b> 圖3系統(tǒng)主界面 </b></p><p><b> 參考文獻(xiàn): </b></p><p> [1]郭峰.深入淺出設(shè)計(jì)模式.北京:中國(guó)鐵道出版社,2013 </p>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- UML建模技術(shù)在學(xué)生管理系統(tǒng)中的應(yīng)用.pdf
- 數(shù)據(jù)挖掘在學(xué)生心理管理系統(tǒng)中的應(yīng)用.pdf
- 數(shù)據(jù)挖掘技術(shù)在學(xué)生助學(xué)系統(tǒng)中的應(yīng)用.pdf
- 數(shù)據(jù)挖掘在學(xué)生信息管理系統(tǒng)中的應(yīng)用.pdf
- 談“愛(ài)班級(jí)”軟件在學(xué)生管理中的應(yīng)用
- 聚類分析方法在學(xué)生信息管理系統(tǒng)中的應(yīng)用.pdf
- 關(guān)聯(lián)挖掘及其改進(jìn)技術(shù)在學(xué)生評(píng)優(yōu)系統(tǒng)中的應(yīng)用.pdf
- apriori算法在學(xué)生信息管理系統(tǒng)中應(yīng)用研究
- SNS在學(xué)生日常管理系統(tǒng)中的研究與應(yīng)用.pdf
- 面向切面編程技術(shù)在學(xué)生工作管理系統(tǒng)中的應(yīng)用研究.pdf
- 數(shù)據(jù)挖掘技術(shù)在學(xué)生成績(jī)管理中的應(yīng)用研究.pdf
- 數(shù)據(jù)挖掘技術(shù)在學(xué)生綜合信息管理系統(tǒng)中的應(yīng)用研究.pdf
- 圖書借閱行為模式挖掘方法在學(xué)生借書管理系統(tǒng)中的應(yīng)用
- 信息技術(shù)在學(xué)生科學(xué)探究活動(dòng)中的應(yīng)用.pdf
- 企業(yè)生產(chǎn)現(xiàn)場(chǎng)管理在學(xué)生宿舍衛(wèi)生管理中的應(yīng)用
- 畢業(yè)論文---打印技術(shù)在學(xué)生量化考核系統(tǒng)中的應(yīng)用和研究
- 決策樹(shù)在學(xué)生信息管理系統(tǒng)中的應(yīng)用研究.pdf
- 數(shù)據(jù)倉(cāng)庫(kù)技術(shù)在學(xué)生成績(jī)分析系統(tǒng)中的應(yīng)用.pdf
- 圖書借閱行為模式挖掘方法在學(xué)生借書管理系統(tǒng)中的應(yīng)用.pdf
- 管理學(xué)知識(shí)在學(xué)生管理工作中的應(yīng)用
評(píng)論
0/150
提交評(píng)論