




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上 SELECT I/O 模型服務(wù)端的程序?qū)崿F(xiàn)一實驗?zāi)康耐ㄟ^這次實驗,掌握Winsock提供的兩種套接字模式:鎖定和非鎖定,一個應(yīng)用程序如何通過他們管理I/O,Winsock提供了一些I/O模型,select模型有助于應(yīng)用程序通過一種“異步”方式,一次對一個或多個套接字上進(jìn)行的通信加以管理,防止應(yīng)用程序在套接字處于鎖定模式中,在一次I/O綁定調(diào)用過程中,被迫進(jìn)入“鎖定”狀態(tài);同時防止在套接字處于非鎖定模式中時,產(chǎn)生WSAEWOULDBLOCK錯誤。二實驗環(huán)境操作系統(tǒng):Microsoft Windows 7 專業(yè)版 64位開發(fā)軟件:Visual C+開發(fā)語言:C三實驗原理
2、Select模型是winsock中最常見的I/O模型。之所以稱其為“select模型”,是由于他的中心思想便是利用select函數(shù)實現(xiàn)對I/O的管理!最初設(shè)計該模型時,主要面向的是某些使用Unix操作系統(tǒng)的計算機。select(選擇)模型是將網(wǎng)絡(luò)事件與套接字集合關(guān)聯(lián),有網(wǎng)絡(luò)事件發(fā)生的套接字保留在集合中,無網(wǎng)絡(luò)事件發(fā)生的套接字被從集合中清除。select有“篩選”之意,即將有網(wǎng)絡(luò)事件發(fā)生的套接字“篩選”出來!Select函數(shù)本身是阻塞函數(shù),使用它可以在一個線程中出力多個套接字。select模型使那些想避免在套接字調(diào)用過程中被無辜“鎖定”的應(yīng)用程序,采取一種有序的方式,同時進(jìn)行對多個套接字的管理。
3、設(shè)計這個函數(shù),唯一的目的便是防止應(yīng)用程序在套接字處于鎖定模式中時,在一次I/O綁定調(diào)用(如send或recv)過程中,被迫進(jìn)入“鎖定”狀態(tài);同時防止在套接字處于非鎖定模式中時,產(chǎn)生WSAEWOULDBLOCK錯誤。四實驗方法及步驟 1.程序設(shè)計步驟(1)初始化Winsock庫(2)創(chuàng)建監(jiān)聽套接字(3)綁定套接字到本地機器(4)進(jìn)入監(jiān)聽模式2.程序流程圖3.關(guān)鍵源碼的解析(1)fd_set fdSocket;/ 所有可用套節(jié)字集合FD_ZERO(&fdSocket); /將fdSocket初始化成空集合FD_SET(sListen, &fdSocket); /將套接字sListe
4、n加入到fdSocket(2)fd_set fdRead = fdSocket; /將fdSocket賦值給fdReadint nRet = :select(0, &fdRead, NULL, NULL, NULL);/此處的select保留發(fā)生網(wǎng)絡(luò)事件的套接字,去除無響應(yīng)的套接字。(3)通過將原來fdSocket集合與select處理過的fdRead集合比較,/ 確定都有哪些套節(jié)字有未決I/O,并進(jìn)一步處理這些I/Ofor(int i=0; i<(int)fdSocket.fd_count; i+)if(FD_ISSET(fdSocket.fd_arrayi, &fdR
5、ead) if(fdSocket.fd_arrayi = sListen)/ (1)監(jiān)聽套節(jié)字接收到新連接if(fdSocket.fd_count < FD_SETSIZE) /FD_SELECT為64 sockaddr_in addrRemote;int nAddrLen = sizeof(addrRemote);SOCKET sNew = :accept(sListen, (SOCKADDR*)&addrRemote, &nAddrLen);FD_SET(sNew, &fdSocket);printf("接收到連接(%s)n", :inet
6、_ntoa(addrRemote.sin_addr);第一次循環(huán)執(zhí)行的是sListen套接字,第二次循環(huán)執(zhí)行是sNew套接字;第二次循環(huán)fdSocket集合中存在sListen和sNew兩個套接字,fdRead集合中存在3中情況:sListen在sNew不在;sListen不在sNew在;sListen在sNew都在五實驗數(shù)據(jù)記錄及分析客戶端使用本地回環(huán)地址127.0.0.1進(jìn)行測試,測試結(jié)果正確。六實驗總結(jié)這次的實驗是SELECT I/O 模型服務(wù)端的程序?qū)崿F(xiàn),通過本次實驗,讓我對select模型有了更好的認(rèn)識和理解。之前的實驗都是關(guān)于套接字有關(guān)的內(nèi)容,但套接字都是阻塞的,不能同時處理多個連
7、接,這次的select就很好的解決了這個問題?,F(xiàn)在一個線程可以出力多個套接字,會在得到具體的通知后調(diào)用響應(yīng)的函數(shù)。 而且select在阻塞和非阻塞模式下都能運行。這次的改進(jìn)在編程史上是一次變革,同樣對于我們同學(xué)也有了很好的啟發(fā),有些東西是在不斷的改進(jìn)中才能得到提高,對于一些事物我們在知道了它的不足之處之后想辦法彌補就是進(jìn)步!教師評閱:90-95分:實驗課前做了充足的準(zhǔn)備工作,與專業(yè)相關(guān)知識能緊密聯(lián)系。實驗報告條理清晰,書寫規(guī)范,圖文并茂,報告內(nèi)容全面,主要內(nèi)容闡述詳細(xì)。認(rèn)識體會深刻,起到了實驗的目的。80-85分:實驗課前做了充足的準(zhǔn)備工作,與專業(yè)相關(guān)知識能較緊密聯(lián)系。實驗報告條理清晰,書寫規(guī)范,圖文并茂,報告內(nèi)容較全面,主要內(nèi)容闡述較詳細(xì)。認(rèn)識體會較深刻,達(dá)到了實驗的作用。70-75分:實驗課前準(zhǔn)備較充足,與專業(yè)相關(guān)知識能基本能聯(lián)系,實驗報告條理清晰,書寫較規(guī)范,報告內(nèi)容較全面,能用部分圖片展示相關(guān)內(nèi)容,主要內(nèi)容闡述較詳
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新版試用期勞動合同模板合同
- 土地承包合同法律文本示例
- 廠家設(shè)備租賃合同樣本集錦
- 項目合作人才服務(wù)合同
- 茶葉購銷合同模板
- 新產(chǎn)品開發(fā)項目合同協(xié)議書范本
- 保密合同-工作手機保管細(xì)則
- 度設(shè)備采購借款合同模板
- 倉儲用房租賃合同參考樣本
- 度醫(yī)療服務(wù)采購合同
- 財務(wù)管理學(xué)(第10版)課件 第1章 總論
- DL-T5002-2021地區(qū)電網(wǎng)調(diào)度自動化設(shè)計規(guī)程
- 2024年南京旅游職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫附答案
- MOOC 職業(yè)生涯開發(fā)與管理-南京郵電大學(xué) 中國大學(xué)慕課答案
- 春節(jié)的那些事作文6篇
- 《研學(xué)旅行課程設(shè)計》課件-領(lǐng)悟研學(xué)旅行的目標(biāo)和意義
- XF-T 3004-2020 汽車加油加氣站消防安全管理
- 認(rèn)識辦公室(辦公室管理課件)
- (正式版)JBT 14660-2024 額定電壓6kV到30kV地下掘進(jìn)設(shè)備用橡皮絕緣軟電纜
- 本科院校-基礎(chǔ)醫(yī)學(xué)-醫(yī)學(xué)細(xì)胞生物學(xué)-第二章 細(xì)胞的概念與分子基礎(chǔ)
- iso37001-2016反賄賂管理手冊程序文件表單一整套
評論
0/150
提交評論