




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、大型作業(yè)答辯考試程序”客戶端/服務(wù)器模式”制作詳解程序組成結(jié)構(gòu)服務(wù)器程序:1.采用了WinSocket32的完成端口模型(I/O completion ports)2.WIN32多線程技術(shù)3.ODBC APIS 進(jìn)行數(shù)據(jù)庫操作客戶端程序:1.用Win32 API函數(shù)構(gòu)造主窗體和界面元素服務(wù)器程序詳解o完成端口模型(I/O complrtion ports)是迄今為止最為復(fù)雜的一種I/O模型,假如一個(gè)程序需要管理為數(shù)眾多的套接字,那么采用這種模型往往可以達(dá)到最佳的系統(tǒng)性能,不幸的是該模型只適用與WIN2000和WINNT操作系統(tǒng),因其設(shè)計(jì)的復(fù)雜性,只有在你的應(yīng)用程序需要同時(shí)管理數(shù)百乃至上千個(gè)套接
2、字的時(shí)候,而且希望隨著系統(tǒng)內(nèi)安裝的CPU的數(shù)量增多,應(yīng)用程序的性能也可以線性的提升,才考慮采用”完成端口模型”(WEB服務(wù)器便是這方面的典型例子.), I/O complrtion ports是唯一適用于高負(fù)載服務(wù)器的一個(gè)技術(shù),它利用一些線程幫助平衡”I/O請(qǐng)求”所引起的負(fù)載,這樣的構(gòu)架特別適合應(yīng)用在SMP系統(tǒng)中產(chǎn)生所謂的”Scalable”服務(wù)器.(Scalable是指能夠籍著增加RAM或磁盤空間,CPU個(gè)數(shù)而提升應(yīng)用程序效能的一種系統(tǒng)).服務(wù)器程序詳解2o完全端口模型的具體實(shí)現(xiàn) 為了使用”完成端口模型”,我產(chǎn)生了一堆線程在端口上等待,線程數(shù)量=CPU個(gè)數(shù)x2+2,我將每個(gè)客戶端產(chǎn)生的文件句
3、柄與I/O completion ports端口相關(guān)聯(lián),建立了這種關(guān)系之后,任何客戶端發(fā)出操作請(qǐng)求,便會(huì)導(dǎo)致I/O completion packet被送到”完成端口”去,這個(gè)步驟是操作系統(tǒng)完成的,為了回應(yīng)I/O completion packet,我讓I/O completion釋放一個(gè)等待中的線程,如果目前沒有線程正在等待,它不會(huì)為這個(gè)客戶端N產(chǎn)生新的線程, 當(dāng)作用中的線程處理完畢相應(yīng)客戶端的”overlapped I/O”后,將返回I/O completion端口進(jìn)行等待. 客戶端N這時(shí)才能夠被處理,這樣就保證了我的Workers線程總是保持一個(gè)穩(wěn)定的數(shù)量(CPU個(gè)數(shù)x2+2).服務(wù)器程
4、序詳解4o數(shù)據(jù)庫的操作實(shí)現(xiàn): 這部分功能主要是通過WinSocket32 API和ODBC API結(jié)合使用來實(shí)現(xiàn)的,服務(wù)端進(jìn)入監(jiān)聽狀態(tài)后,為每個(gè)客戶端提供相應(yīng)線程處理發(fā)過來的指令,通過分析指令,作出以下相應(yīng)的操作 客戶端發(fā)送的指令(自定義的): login: 登陸校驗(yàn) 參數(shù):用戶名,科目,密碼 Srecv:ScanTm: 檢查服務(wù)器時(shí)間校對(duì)試卷修改試卷狀態(tài),拋出計(jì)數(shù)值 Srecv:GetSta: 獲取試卷狀態(tài) Srecv:GetRlt: 獲取上次做答 Srecv:GetNum: 獲得試卷相關(guān)信息(總題數(shù),開考時(shí)間,結(jié)束時(shí)間) Srecv:GetQue: 獲取試卷題目內(nèi)容. Srecv:Save
5、Dt: 保存試卷 Srecv:ChanST: 修改試卷狀態(tài).服務(wù)器程序總結(jié)數(shù)據(jù)庫被單獨(dú)存放在一個(gè)服務(wù)器中可以保證數(shù)據(jù)安全性程序會(huì)將客戶端的一切操作顯示在窗口中,用戶可以通過觀察窗口,知道所有客戶端的動(dòng)作.這個(gè)程序采用”完成端口”模型,可以滿足大規(guī)模的考試需求.客戶端程序詳解1o 窗口完全采用Win32API函數(shù)生成o 主要包含一下標(biāo)準(zhǔn)控件o static控件o Edit控件o Button控件o Scroll控件o 窗口元素全部采用計(jì)算后的相對(duì)坐標(biāo)定位,所以800X600和1024X768下均能正常顯示.客戶端程序詳解2試卷的初始化 考慮到每張?jiān)嚲淼念}目數(shù)量都不同,為了節(jié)約內(nèi)存空間,所以我在堆
6、中動(dòng)態(tài)生成了一個(gè)試卷結(jié)構(gòu)體,通過向服務(wù)器程序發(fā)送GetNum:指令來獲得試卷總題數(shù)QuestionNum,然后使用TestPaper=new TestRubric QuestionNum o /*結(jié)構(gòu)體定義*/o/試卷每道題的結(jié)構(gòu)ostruct Questionso BOOL state;o char Text 512;o;ostruct SelectObjectoBOOL state;ochar Text256;o;ostruct TestRubrico struct Questions Tile;o struct SelectObject choose 4;o;o由于TextOut函數(shù)不支
7、持自動(dòng)換行,所以換行操作必須由我自己完成.因此我用同樣的方法在堆中創(chuàng)建了一個(gè)Screen用作屏幕顯示的結(jié)構(gòu)體oScreen=new LinesLINESostruct Linesoint earmark; /用來存儲(chǔ)Button的IDoBOOL color1;/置顏色標(biāo)志oBOOL color2;/置顏色標(biāo)志ochar Line 512;o;oLINES=掃描TestPaper中超過屏幕寬度的行數(shù)+ QuestionNum*5+QuestionNum*3o屏幕寬度=客戶區(qū)的寬/每個(gè)文字的寬度/2*2o屏幕高度=客戶區(qū)的高/每個(gè)文字的高度o為每一體產(chǎn)生4個(gè)互斥的按鈕o按鈕總數(shù)= Question
8、Num*4o在堆中生成hWndList數(shù)組保存按鈕handleohWndList=new hWnd QuestionNum*4o按鈕ID=題號(hào)*10+選項(xiàng)號(hào)oScreen.earmark=按鈕ID客戶端程序詳解3o將TestPaper中的內(nèi)容經(jīng)過換行處理之后Copy到Screen結(jié)構(gòu)中,并設(shè)置好Screen.earmark,Screen.Color1, Screen.Color2o在主窗口的消息循環(huán)的WM_PAINT消息中將Screen.Line顯示在窗口中oTextOut(hdc,x,cyhar*i,Screen.Line,strlen(Screen.Line);o并檢查Screen.ear
9、mark中是否為零,不為零就oShowWindow(hWndListSreen.earmark/10-1 Screen.earmark%10-1,1);oScreen.Color1, Screen.Color2是否為1,是就改變顏色顯示.客戶端程序詳解3換行中存在的問題:行寬=客戶區(qū)的象素寬/每個(gè)文字的寬度/2*2是偶數(shù)漢字占用雙字節(jié),字母和標(biāo)點(diǎn)符號(hào)占用單字節(jié).一行文字=字母+標(biāo)點(diǎn)+漢字 (有可能產(chǎn)生奇數(shù)寬)當(dāng)一行文字產(chǎn)生一個(gè)奇數(shù)寬,最后一個(gè)字符又是漢字的時(shí),就會(huì)把這個(gè)漢字切成兩份,另一半會(huì)在下一行中顯示,這就造成了亂碼.我的解決辦法是在換行時(shí)增加一個(gè)變量HanChar=0,當(dāng)掃描到字母或是標(biāo)點(diǎn)時(shí),就HanChar+.一行文字掃描完后需要另起一行時(shí),判斷HanChar的奇偶性,當(dāng)為奇數(shù)時(shí)行寬往里縮進(jìn)一個(gè)字節(jié),以避免以上情況.客戶端程序總結(jié)o 由于客戶端界面采用大量計(jì)算,顯示的內(nèi)容不會(huì)是固定的模式,他會(huì)根據(jù)題目的長短變化作出相應(yīng)調(diào)整,以達(dá)到最好的顯示效果.o 當(dāng)用戶登陸驗(yàn)證成功之后,服務(wù)器會(huì)拋一個(gè)時(shí)間計(jì)數(shù),客戶端通過一個(gè)定時(shí)器,每隔1秒鐘將
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國鋰電池正極材料市場(chǎng)發(fā)展趨勢(shì)及投資戰(zhàn)略研究報(bào)告
- 2025-2030年中國鋁冶煉行業(yè)運(yùn)行動(dòng)態(tài)與前景趨勢(shì)分析報(bào)告
- 2025-2030年中國菱鎂礦產(chǎn)業(yè)競(jìng)爭(zhēng)格局與十三五規(guī)劃研究報(bào)告
- 2025-2030年中國聯(lián)苯雙酯行業(yè)市場(chǎng)運(yùn)行狀況與十三五規(guī)劃分析報(bào)告
- 2025-2030年中國粘玉米行業(yè)規(guī)模分析及發(fā)展建議研究報(bào)告
- 2025-2030年中國空管系統(tǒng)市場(chǎng)十三五規(guī)劃與投資戰(zhàn)略研究報(bào)告
- 2025-2030年中國畜禽養(yǎng)殖中抗生素行業(yè)發(fā)展?fàn)顩r及投資戰(zhàn)略研究報(bào)告
- 東北財(cái)經(jīng)大學(xué)《中醫(yī)護(hù)理學(xué)基礎(chǔ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣東江門幼兒師范高等??茖W(xué)?!睹嫦?qū)ο笈c可視化編程》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣州工商學(xué)院《健康服務(wù)與營銷學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 一年級(jí)語文《端午粽》說課課件
- NB/T 11261-2023煤礦凍結(jié)孔施工及質(zhì)量驗(yàn)收規(guī)范
- 《鑄造用增碳劑》
- 嬰幼兒傷害預(yù)防與處理配套教材電子課件(完整版)
- 線下庭審申請(qǐng)書
- 萃取技術(shù) 多級(jí)逆流萃取
- 部編版小學(xué)五年級(jí)語文教材培訓(xùn)課件【部編】
- 盆景造型經(jīng)驗(yàn)
- 2023年廣東省佛山市順德區(qū)小升初數(shù)學(xué)試卷(含答案)
- ICU護(hù)理查房記錄【范本模板】
- 威風(fēng)堂堂進(jìn)行曲
評(píng)論
0/150
提交評(píng)論