實(shí)驗(yàn)7 WSAeventselectWINSOCKIO模型程序設(shè)計(jì)_第1頁
實(shí)驗(yàn)7 WSAeventselectWINSOCKIO模型程序設(shè)計(jì)_第2頁
實(shí)驗(yàn)7 WSAeventselectWINSOCKIO模型程序設(shè)計(jì)_第3頁
實(shí)驗(yàn)7 WSAeventselectWINSOCKIO模型程序設(shè)計(jì)_第4頁
實(shí)驗(yàn)7 WSAeventselectWINSOCKIO模型程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、實(shí)驗(yàn)7 WSAeventselectWINSOCK I/O模型程序設(shè)計(jì)一.實(shí)驗(yàn)?zāi)康耐ㄟ^這次實(shí)驗(yàn),要掌握Winsock提供了另一個(gè)有用的異步I/O模型WSAeventselect WINSOCK I/O模型。和WSAAsyncSelect模型類似的是,它也允許應(yīng)用程序在一個(gè)或多個(gè)套接字上,接收以事件為基礎(chǔ)的網(wǎng)絡(luò)事件通知。由WSAAsyncSelect模型采用的網(wǎng)絡(luò)事件來說,它們均可原封不動地移植到新模型。在用新模型開發(fā)的應(yīng)用程序中,也能接收和處理所有那些事件。該模型最主要的差別在于網(wǎng)絡(luò)事件會投遞至一個(gè)事件對象句柄,而非投遞至一個(gè)窗口例程。由于WSAeventselect WINSOCK I/O模

2、型單線程只能處理64個(gè)套接字,要處理大量客戶I/O請求,可采用線程池技術(shù)來實(shí)現(xiàn)。二.實(shí)驗(yàn)環(huán)境操作系統(tǒng):Microsoft Windows 7 專業(yè)版 64位開發(fā)軟件:Visual C+開發(fā)語言:C三.實(shí)驗(yàn)原理 WSAEventSelect提供了另一種異步事件通知模型。和是WSAAsyncSelect模型類似的是,它也允許應(yīng)用程序在一個(gè)或多個(gè)套接字上,接收以事件為基礎(chǔ)的網(wǎng)絡(luò)事件通知。由WSAAsyncSelect模型采用的網(wǎng)絡(luò)事件來說,它們均可原封不動地移植到新模型。在用新模型開發(fā)的應(yīng)用程序中,也能接受和出力所有那些事件。該模型最主要的差別在于網(wǎng)絡(luò)事件會投遞一個(gè)時(shí)間對象句柄,而非投遞一個(gè)窗口例程

3、。四.實(shí)驗(yàn)方法及步驟1.程序設(shè)計(jì)步驟(1)初始化Winsock庫(2)創(chuàng)建套接字(3)綁定套接字(4)監(jiān)聽(5)創(chuàng)建事件對象,并關(guān)聯(lián)到新的套接字(6)處理事件對象 1).在所有事件對象上等待 2).獲取到來的通知消息 3).添加到表中 4).接收到數(shù)據(jù) 2. 程序流程圖3.關(guān)鍵源碼的解析(1)int nIndex = :WSAWaitForMultipleEvents(nEventTotal, eventArray, FALSE, WSA_INFINITE, FALSE);/ 對每個(gè)事件調(diào)用WSAWaitForMultipleEvents函數(shù),以便確定它的狀態(tài)nIndex = nIndex -

4、 WSA_WAIT_EVENT_0;for(int i=nIndex; i<nEventTotal; i+)nIndex = :WSAWaitForMultipleEvents(1, &eventArrayi, TRUE, 1000, FALSE);其中,nIndex返回的是第一個(gè)對象的位置,若發(fā)生的網(wǎng)絡(luò)事件是accept則會產(chǎn)生一個(gè)新的套接字snew,則再與一個(gè)事件綁定,因?yàn)閃SAWaitForMultipleEvents函數(shù)返回的是對象的第一個(gè)位置,則后面受信的得不到處理,而這里nIndex = :WSAWaitForMultipleEvents(1, &eventA

5、rrayi, TRUE, 1000, FALSE);可以解決這個(gè)問題。:WSAEventSelect(sListen, event, FD_ACCEPT|FD_CLOSE);此處的感興趣的網(wǎng)絡(luò)事件若是加上FD_READ和FD_WRITE事件后根本沒有任何反應(yīng)。五.實(shí)驗(yàn)記錄及分析六.實(shí)驗(yàn)總結(jié) 通過本次實(shí)驗(yàn),讓我對WSAEventSelect模型有了更好的認(rèn)識和理解。跟上次的WSAAsyncSelect原理上沒什么區(qū)別,WSAAsyncSelect就是以windows消息為基礎(chǔ)的網(wǎng)絡(luò)事件,而WSAEventSelect就是對象跟套接字綁定一下,歸根到底還是找到發(fā)生網(wǎng)絡(luò)事件的套接字,然后分析發(fā)生了什

6、么網(wǎng)絡(luò)事件,其中受信和未受信這兩個(gè)狀態(tài)可以在調(diào)用hEventObject參數(shù)來重設(shè)。當(dāng)我抱著這樣的想法做實(shí)驗(yàn)時(shí),我發(fā)現(xiàn)我對這個(gè)實(shí)驗(yàn)的理解只有這膚淺的一層,沒有深入了解,看來我們還是不能掉以輕心!教師評閱:90-95分:實(shí)驗(yàn)課前做了充足的準(zhǔn)備工作,與專業(yè)相關(guān)知識能緊密聯(lián)系。實(shí)驗(yàn)報(bào)告條理清晰,書寫規(guī)范,圖文并茂,報(bào)告內(nèi)容全面,主要內(nèi)容闡述詳細(xì)。認(rèn)識體會深刻,起到了實(shí)驗(yàn)的目的。80-85分:實(shí)驗(yàn)課前做了充足的準(zhǔn)備工作,與專業(yè)相關(guān)知識能較緊密聯(lián)系。實(shí)驗(yàn)報(bào)告條理清晰,書寫規(guī)范,圖文并茂,報(bào)告內(nèi)容較全面,主要內(nèi)容闡述較詳細(xì)。認(rèn)識體會較深刻,達(dá)到了實(shí)驗(yàn)的作用。70-75分:實(shí)驗(yàn)課前準(zhǔn)備較充足,與專業(yè)相關(guān)知識能基本能聯(lián)系,實(shí)驗(yàn)報(bào)告條理清晰,書寫較規(guī)范,報(bào)告內(nèi)容較全面,能用部分圖片展示相關(guān)內(nèi)容,主要內(nèi)容闡述較詳細(xì)。認(rèn)識體會較深刻,達(dá)到了實(shí)驗(yàn)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論