![網(wǎng)絡(luò)編程復(fù)習(xí)資料_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/28/8c374405-d545-4f6c-bd82-96ae4173a9ff/8c374405-d545-4f6c-bd82-96ae4173a9ff1.gif)
![網(wǎng)絡(luò)編程復(fù)習(xí)資料_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/28/8c374405-d545-4f6c-bd82-96ae4173a9ff/8c374405-d545-4f6c-bd82-96ae4173a9ff2.gif)
![網(wǎng)絡(luò)編程復(fù)習(xí)資料_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/28/8c374405-d545-4f6c-bd82-96ae4173a9ff/8c374405-d545-4f6c-bd82-96ae4173a9ff3.gif)
![網(wǎng)絡(luò)編程復(fù)習(xí)資料_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/28/8c374405-d545-4f6c-bd82-96ae4173a9ff/8c374405-d545-4f6c-bd82-96ae4173a9ff4.gif)
![網(wǎng)絡(luò)編程復(fù)習(xí)資料_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/28/8c374405-d545-4f6c-bd82-96ae4173a9ff/8c374405-d545-4f6c-bd82-96ae4173a9ff5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1. 如果網(wǎng)絡(luò)進(jìn)程間采用基于TCP、UDP協(xié)議的無(wú)連接的通信方式,那么必須借助 數(shù)據(jù)報(bào)套接字來(lái)編程。2. ntohs()函數(shù)的含義是 短整數(shù)網(wǎng)絡(luò)順序轉(zhuǎn)換為本機(jī)順序,用于端口號(hào) 。3. TCP和UDP協(xié)議屬于傳輸層協(xié)議,HTTP和FTP則屬于 應(yīng)用 層協(xié)議。4. TCP/IP協(xié)議棧采用 靜態(tài)(全局)分配 和 動(dòng)態(tài)(本地)分配 相結(jié)合的方法,將TCP和UDP各自的65535個(gè)端口號(hào)分為保留端口號(hào)和自由端口號(hào)。5. 為了簡(jiǎn)化套接字網(wǎng)絡(luò)編程,MFC提供了兩個(gè)套接字類: 阻塞模式 和 非阻塞模式。6. CAsyncSocket類支持Windows消息驅(qū)動(dòng)機(jī)制,體現(xiàn)在該類對(duì)象支持6種網(wǎng)絡(luò)事件。請(qǐng)列舉其中5
2、個(gè)網(wǎng)絡(luò)事件, FD-READ事件、 FD-WRITE事件、 FD-ACCEPT事件、 FD-CONNECT事件 和 FD-CLOSE事件 FD-OOB事件 。1. 控制臺(tái)程序的入口函數(shù)是 mian函數(shù) 。3. 從套接字所處的地位來(lái)講,套接字上連 應(yīng)用進(jìn)程 ,下連 網(wǎng)絡(luò)協(xié)議棧 。4. ntohl()函數(shù)的含義是 長(zhǎng)整數(shù)本機(jī)順序轉(zhuǎn)換為網(wǎng)絡(luò)順序,用于IP事件。6. 用于映射命令消息的宏是 ON-COMMAND。用于映射Windows消息宏的前綴是 ON-WM- 。1. FTP協(xié)議的端口號(hào)是 21 。2. 在Internet中,用一個(gè)三元組可以在全局中唯一地標(biāo)識(shí)一個(gè)應(yīng)用層進(jìn)程,分別是應(yīng)用層協(xié)議、 本機(jī)
3、IP地址和傳輸層端口號(hào) 3. 套接字分為三種,分別是 數(shù)據(jù)報(bào)套接字、流式套接字和原始式套接字、4、專門針對(duì)Internet通信域,存儲(chǔ)套接字相關(guān)的網(wǎng)絡(luò)地址信息的結(jié)構(gòu)體是 sockaddr_in5、sendto函數(shù)是用于發(fā)送信息的函數(shù),相對(duì)應(yīng)的信息接收函數(shù)是 recvfrom()6、消息名以前綴“WM_”打頭的消息是 系統(tǒng)消息7、WinSock應(yīng)用程序開(kāi)發(fā)的第一步是對(duì)WinSock進(jìn)行初始化,調(diào)用的函數(shù)WSAStartup8、CInternetSession類中用于建立與FTP服務(wù)器連接的成員函數(shù)是 GetFtpConnection9、對(duì)于非阻塞的套接字工作模式,引入5種“套接字I/O模型”,分
4、別是 選擇模型、事件選擇模型、異步選擇模型、重疊I/O、完成端口10、 監(jiān)聽(tīng)函數(shù)調(diào)用listen(s,5),其中參數(shù)5的含義是 將套接字s加入到集合set中 。11、為了更方便地利用Windows系統(tǒng)的消息驅(qū)動(dòng)機(jī)制,MFC提供了兩個(gè)套接字類,實(shí)現(xiàn)了對(duì)套接字函數(shù)的封裝,分別是 阻塞模式和非阻塞模式12、socket(AF_INET,SOCK_DGRAM,0);該函數(shù)的功能是 創(chuàng)建一個(gè)數(shù)據(jù)報(bào)套接字1、HTTP協(xié)議的端口號(hào)是 80。2、針對(duì)各種通信域的套接字,存儲(chǔ)相應(yīng)地址信息的結(jié)構(gòu)體 sockaddr_in。3、在MFC中,線程分為兩種,分別是工作線程和 用戶界面線程 4、MFC消息類型有三種,分別
5、是Windows消息、控制通知消息、命令消息5、用于把一定范圍的命令消息映射到一個(gè)消息處理函數(shù)的宏是 ON_COMMAND_RANGE。6、CFtpConnection類中用于將本地文件上傳到服務(wù)器的函數(shù)是PutFile7、用于將套接字s加入到集合set中的宏是FD_SET(s,*set)8、在WinSock中,錯(cuò)誤代碼可以通過(guò)調(diào)用WSAGetLastError()函數(shù)得到。9、監(jiān)聽(tīng)函數(shù)調(diào)用listen(s,3),其中參數(shù)3的含義是等待隊(duì)列的長(zhǎng)度。10、WinSock進(jìn)行I/O操作的兩種工作模式分別是阻塞和非阻塞。11、TCP和UDP協(xié)議屬于傳輸層協(xié)議,RPC和FTP則屬于應(yīng)用層協(xié)議12、異步
6、套接字類中用于通知有數(shù)據(jù)可讀的事件是 FD_READ,對(duì)應(yīng)的回調(diào)函數(shù)是 OnReceive ;用于通知可以寫(xiě)數(shù)據(jù)的事件是 FD_WRITE,對(duì)應(yīng)的回調(diào)函數(shù)是OnSend 。簡(jiǎn)要說(shuō)明套接字的應(yīng)用場(chǎng)合。(1)不管是采用對(duì)等模式或者客戶機(jī)/服務(wù)器模式,通信雙方的應(yīng)用程序都需要開(kāi)發(fā)。(2)雙方所交換數(shù)據(jù)的結(jié)構(gòu)和交換數(shù)據(jù)的順序有特定的要求,不符合現(xiàn)在成熟的應(yīng)用層協(xié)議,甚至需要自己去開(kāi)發(fā)應(yīng)用層協(xié)議,自己設(shè)計(jì)最適合的數(shù)據(jù)結(jié)構(gòu)和信息交換規(guī)程。套接字編程分為面向連接和無(wú)連接兩種類型,請(qǐng)說(shuō)明面向連接套接字編程中客戶端的編程流程。創(chuàng)建流式套接字,發(fā)送連接請(qǐng)求,發(fā)送數(shù)據(jù),接收數(shù)據(jù),關(guān)閉套接字。解釋進(jìn)程和線程的概念,簡(jiǎn)
7、要說(shuō)明如何正常終止線程和提前終止線程。 進(jìn)程是處于運(yùn)行過(guò)程中的程序?qū)嵗?,是操作系統(tǒng)調(diào)度和分配資源的基本單位。線程是進(jìn)程的一個(gè)實(shí)體,執(zhí)行和調(diào)度單位。正常終止線程:在函數(shù)執(zhí)行完畢時(shí)能夠退出控制函數(shù),并返回一個(gè)用來(lái)表示終止原因的值。提前終止線程:在線程內(nèi)部調(diào)用AfxEndThread函數(shù),便可強(qiáng)迫終止。 簡(jiǎn)要說(shuō)明select 選擇模型的操作步驟。首先,檢查系統(tǒng)中是否有一個(gè)或多個(gè)套接字實(shí)例;其次,檢查找到Winsock實(shí)現(xiàn)是否可用,主要確認(rèn)版本號(hào);再者,建立Winsock實(shí)現(xiàn)與應(yīng)用程序的聯(lián)系;最后,函數(shù)成功返回,返回必要的參數(shù)。簡(jiǎn)要說(shuō)明WSAStartup函數(shù)的初始化過(guò)程。首先,檢查系統(tǒng)中是否有一個(gè)或
8、多個(gè)套接字實(shí)例;其次,檢查找到Winsock實(shí)現(xiàn)是否可用,主要確認(rèn)版本號(hào);再者,建立Winsock實(shí)現(xiàn)與應(yīng)用程序的聯(lián)系;最后,函數(shù)成功返回,返回必要的參數(shù)。什么是阻塞問(wèn)題?UNIX操作系統(tǒng)下是如何應(yīng)對(duì)的?阻塞是指一個(gè)進(jìn)程執(zhí)行了一個(gè)函數(shù)或者系統(tǒng)調(diào)用,該函數(shù)由于某種原因不能立即完成,因而不能返回調(diào)用它的進(jìn)程,導(dǎo)致進(jìn)程受控于這個(gè)函數(shù)而處于等待的狀態(tài),進(jìn)程的這種狀態(tài)稱為阻塞。 利用UNIX操作系統(tǒng)的FORK()系統(tǒng)調(diào)用,編制多進(jìn)程并發(fā)執(zhí)行的服務(wù)器程序。套接字編程分為面向連接和無(wú)連接兩種類型,請(qǐng)說(shuō)明面向連接套接字編程中服務(wù)器端的編程流程。創(chuàng)建流式套接字,綁定該套接字,啟動(dòng)套接字監(jiān)聽(tīng),接受客戶端的連接請(qǐng)求
9、,讀寫(xiě)數(shù)據(jù),關(guān)閉套接字。在全局中唯一地來(lái)標(biāo)識(shí)網(wǎng)絡(luò)中通信的兩個(gè)進(jìn)程需要五元組,請(qǐng)說(shuō)明五元組由哪幾部分組成。 傳輸層協(xié)議,本機(jī)IP地址,本地機(jī)傳輸層端口,遠(yuǎn)地機(jī)IP地址,遠(yuǎn)地址傳輸層端口簡(jiǎn)要說(shuō)明WSAEventSelect事件選擇模型的操作步驟。 創(chuàng)建事件對(duì)象句柄;關(guān)聯(lián)套接字和事件對(duì)象,注冊(cè)關(guān)心的網(wǎng)絡(luò)事件;等待網(wǎng)絡(luò)事件觸發(fā)事件對(duì)象句柄的工作狀態(tài);檢查套接字上所發(fā)生的網(wǎng)絡(luò)事件類型;處理網(wǎng)絡(luò)事件請(qǐng)簡(jiǎn)要說(shuō)明基于Internet的C/S模式應(yīng)用程序的特點(diǎn)。非對(duì)稱性:服務(wù)器提供服務(wù),客戶端使用服務(wù);對(duì)等性:客戶機(jī)和服務(wù)器公有一套約定;服務(wù)器的被動(dòng)性:不主動(dòng)提供服務(wù);客戶機(jī)的主動(dòng)性:客戶機(jī)主動(dòng)向服務(wù)器提出請(qǐng)求
10、;說(shuō)明CAsyncSocket異步套接字類中用于通知數(shù)據(jù)可讀和可寫(xiě)的事件及回調(diào)函數(shù)可讀事件:FD_READ事件通知,通知有數(shù)據(jù)可讀;回調(diào)函數(shù)是OnReceive(int nErrorCode)??蓪?xiě)事件:FD_WRITE事件通知,通知有數(shù)據(jù)可寫(xiě);回調(diào)函數(shù)是OnSend(int nErrorCode)。1. 能引起阻塞的套接字調(diào)用有哪些?ACCEPT()等待接收客戶端的連接請(qǐng)求;RECV和RECVFORM用于接收數(shù)據(jù)的函數(shù);SEND和SENDTO用于發(fā)送數(shù)據(jù)的函數(shù);CONNECT客戶端連接服務(wù)器的函數(shù);SELECT用于判斷符合條件套接字的函數(shù)。2. 請(qǐng)描述C/S模式的無(wú)連接套接字編程流程。(1)
11、服務(wù)器先啟動(dòng),等待客戶端發(fā)數(shù)據(jù);(2)服務(wù)器進(jìn)程將套接字綁定到固定端口;(3)客戶端使用自由分配端口號(hào);(4)客戶端首先發(fā)送數(shù)據(jù),攜帶對(duì)方的地址;(5)服務(wù)器接收數(shù)據(jù),同時(shí)獲取到發(fā)送端地址,便可回發(fā)數(shù)據(jù)。3. 說(shuō)明WinSock兩種工作模式的優(yōu)缺點(diǎn)。WinSock有兩種工作模式:阻塞和非阻塞模式。阻塞模式:經(jīng)過(guò)調(diào)用、等待和返回過(guò)程。如果不滿足網(wǎng)絡(luò)條件,會(huì)永遠(yuǎn)阻塞。非阻塞模式:函數(shù)調(diào)用后會(huì)立即返回,不管是否成功。如果不滿足網(wǎng)絡(luò)條件,會(huì)造成資源浪費(fèi),很多無(wú)功而返的情況。簡(jiǎn)述WSAAsyncSelect異步I/O模型的編程步驟。用createwindow函數(shù)創(chuàng)建一個(gè)窗口回調(diào)例程;設(shè)置好窗口的框架后,
12、開(kāi)始創(chuàng)建套接字;調(diào)用異步選擇模型函數(shù)WSAAsyncSelect,并注冊(cè)感興趣的事件,指定接收消息的窗口句柄。1什么是線程,什么是進(jìn)程?進(jìn)程是處于運(yùn)行過(guò)程中的程序?qū)嵗?,是操作系統(tǒng)調(diào)度和分配資源的基本單位。 一個(gè)進(jìn)程實(shí)體由程序代碼、數(shù)據(jù)和進(jìn)程控制塊三部分構(gòu)成。線程是進(jìn)程中的一個(gè)實(shí)體,是被系統(tǒng)獨(dú)立調(diào)度和分派的基本單位,線程自己不擁有系統(tǒng)資源,只擁有一點(diǎn)在運(yùn)行中必不可少的資源,但它可與同屬一個(gè)進(jìn)程的其它線程共享進(jìn)程所擁有的全部資源。2實(shí)現(xiàn)網(wǎng)間進(jìn)程通信必須解決哪些問(wèn)題?(1)網(wǎng)間進(jìn)程的標(biāo)識(shí)問(wèn)題;(2)如何與網(wǎng)絡(luò)協(xié)議棧連接的問(wèn)題;(3)協(xié)議的識(shí)別問(wèn)題;(4)不同的通信服務(wù)的問(wèn)題3舉例說(shuō)明面向消息的協(xié)議與
13、基于流動(dòng)協(xié)議有什么不同。 例如甲向乙發(fā)送三個(gè)消息,分別是:128、64和32字節(jié)。 面向消息的協(xié)議中,如果接受緩沖區(qū)是256字節(jié),足以接收3條消息,且這三條消息全部達(dá)到。乙仍然需要發(fā)送3條讀取消息。分別返回128、64、32字節(jié),而不用一次讀取來(lái)調(diào)用者單個(gè)數(shù)據(jù)包。 基于流的消息協(xié)議中,在接收端乙的堆棧把所有進(jìn)來(lái)的消息數(shù)據(jù)包聚集在一起,放入堆棧,等待應(yīng)用進(jìn)程讀取。進(jìn)程發(fā)送讀取命令,指定了進(jìn)程接收緩沖區(qū),如果進(jìn)程緩沖區(qū)有256字節(jié),系統(tǒng)馬上返回全部224字節(jié)。4說(shuō)明用戶和客戶機(jī),服務(wù)器和服務(wù)器類計(jì)算機(jī)的區(qū)別??蛻?client)和服務(wù)器都指的是應(yīng)用進(jìn)程,即計(jì)算機(jī)軟件?!坝脩簟?user)指的是使用
14、計(jì)算機(jī)的人。 服務(wù)器(server)這個(gè)術(shù)語(yǔ)來(lái)指那些運(yùn)行著的服務(wù)程序。服務(wù)器類計(jì)算機(jī)(server-class computer)這一術(shù)語(yǔ)來(lái)稱呼那些運(yùn)行服務(wù)器軟件的強(qiáng)大的計(jì)算機(jī)。5什么是套接字? 答:是應(yīng)用程序通過(guò)網(wǎng)絡(luò)協(xié)議棧進(jìn)行通信交互的接口。6說(shuō)明套接字特點(diǎn)。 答:(1)通信域。套接字通常只和同一域中的套接字交換數(shù)據(jù)。如果數(shù)據(jù)交換要穿越域的邊界,就一定要執(zhí)行某種解釋程序。(2)套接字有三種類型,流式、數(shù)據(jù)包和原始套接字。(3)套接字由應(yīng)用層創(chuàng)建,并為其服務(wù),而后被釋放。(4)使用確定的IP地址和傳輸層端口號(hào)。7說(shuō)明套接字應(yīng)用場(chǎng)合。答:(1)不管是采用對(duì)等模式或者客戶機(jī)/服務(wù)器模式,通信雙方的
15、應(yīng)用程序都需要開(kāi)發(fā)。(2)雙方所交換數(shù)據(jù)的結(jié)構(gòu)和交換數(shù)據(jù)的順序有特定的要求,不符合現(xiàn)在成熟的應(yīng)用層協(xié)議,甚至需要自己去開(kāi)發(fā)應(yīng)用層協(xié)議,自己設(shè)計(jì)最適合的數(shù)據(jù)結(jié)構(gòu)和信息交換規(guī)程。8什么是阻塞問(wèn)題?如何對(duì)應(yīng)?答:阻塞是指一個(gè)進(jìn)程執(zhí)行了一個(gè)函數(shù)或者系統(tǒng)調(diào)用,該函數(shù)由于某種原因不能立即完成,因而不能返回調(diào)用它的進(jìn)程,導(dǎo)致進(jìn)程受控于這個(gè)函數(shù)而處于等待的狀態(tài),進(jìn)程的這種狀態(tài)稱為阻塞。利用UNIX操作系統(tǒng)的FORK()系統(tǒng)調(diào)用,編制多進(jìn)程并發(fā)執(zhí)行的服務(wù)器程序。9說(shuō)明WSAStartup函數(shù)初始化過(guò)程。(1) 查找WinSock.DLL文件,如果有WinSock實(shí)現(xiàn),則調(diào)入相關(guān)信息。若無(wú),則初始化失敗。返回錯(cuò)誤
16、信息。(2)。確認(rèn)版本號(hào)。(3)建立WinSock同應(yīng)用程序的聯(lián)系。(4)函數(shù)創(chuàng)建成功,在WSAData結(jié)構(gòu)中返回許多信息,否則,通知用戶“初始化失敗”。10多線程機(jī)制在網(wǎng)絡(luò)編程中如何應(yīng)用?如果一個(gè)應(yīng)用程序,有多個(gè)任務(wù)需要同時(shí)進(jìn)行處理,那就最適合使用多線程機(jī)制。對(duì)于網(wǎng)絡(luò)上客戶機(jī)軟件,采用多線程的編程技術(shù),能克服在單線程的編程模式下,由于阻塞等待而產(chǎn)生的客戶程序就不能及時(shí)響應(yīng)用戶的操作命令的問(wèn)題。對(duì)于網(wǎng)絡(luò)上服務(wù)器軟件,采用多線程的編程技術(shù),能更好地為多個(gè)客戶服務(wù)。即便是對(duì)于一個(gè)客戶,采用多線程機(jī)制也能大大提高應(yīng)用程序的運(yùn)行效率。11使用CAsyncSocket類的一般步驟是什么?序號(hào)服務(wù)器(Se
17、rver)客戶機(jī)(Client)1/構(gòu)建一個(gè)套接字CAsyncSocket sockSrvr; /構(gòu)建一個(gè)套接字CAsyncSocket sockClient;2/創(chuàng)建SOCKET句柄,綁定到指定的端口sockSrvr.Create(nPort);/創(chuàng)建SOCKET句柄,使用默認(rèn)參數(shù)sockClient.Create();3/啟動(dòng)監(jiān)聽(tīng),時(shí)刻準(zhǔn)備接受連接請(qǐng)求sockSrvr.Listen();4/請(qǐng)求連接到服務(wù)器sockClient.Connect(strAddr,nport);5/構(gòu)造一個(gè)新的空的套接字 CasyncSocket sockRecv;/接收連接 sockSrvr.Accept(s
18、ockRecv);6/接收數(shù)據(jù)sockSrvr.Receive(pBuf,nLen);/發(fā)送數(shù)據(jù)sockClient.Send(pBuf,nLen);7/發(fā)送數(shù)據(jù)sockSrvr.Send(pBuf,nLen);/接收數(shù)據(jù)sockClient.Receive(pBuf,nLen);8/關(guān)閉套接字對(duì)象sockSrvr.Close();/關(guān)閉套接字對(duì)象sockClient.Close();12使用WinInet類編程的一般步驟是什么?(1)創(chuàng)建CInternetSession類對(duì)象,創(chuàng)建并初始化Internet會(huì)話。(2)利用CInternetSession類的QueryOption或SetOpt
19、ion成員函數(shù),可以查詢或設(shè)置該類內(nèi)含的Internet請(qǐng)求選項(xiàng),這一步是可選。(3)創(chuàng)建連接類對(duì)象,建立CInternetSession對(duì)象與網(wǎng)絡(luò)服務(wù)器的連接,也就是應(yīng)用程序與網(wǎng)絡(luò)服務(wù)器的連接。(4)創(chuàng)建文件檢索類對(duì)象,對(duì)服務(wù)器進(jìn)行檢索 (5)如果需要使用異步操作模式,可以重載CInternetSession類的OnStatusCallback函數(shù),并啟動(dòng)應(yīng)用程序使用狀態(tài)回調(diào)機(jī)制。重載相關(guān)函數(shù),加入自己的代碼。(6)如果還想更緊密地控制對(duì)于服務(wù)器文件的訪問(wèn),可以進(jìn)一步創(chuàng)建文件類對(duì)象實(shí)例,完成文件查找或文件讀寫(xiě)操作。(7)創(chuàng)建CInternetException類對(duì)象實(shí)例,處理錯(cuò)誤。(8)關(guān)閉
20、各種類,將資源釋放給系統(tǒng)。13說(shuō)明用戶接口線程和工作線程的概念和特點(diǎn)。用戶接口線程:通常用來(lái)處理用戶輸入產(chǎn)生的消息和事件,并獨(dú)立地響應(yīng)正在應(yīng)用程序其它部分執(zhí)行的線程們產(chǎn)生的消息和事件。用戶接口線程包含一個(gè)消息處理的循環(huán),以應(yīng)對(duì)各種事件。工作線程:適用于處理那些不要求用戶輸入并且比較消耗時(shí)間的其他任務(wù)。對(duì)用戶來(lái)說(shuō),工作線程運(yùn)行在后臺(tái)。這就使得工作線程特別適合去等待一個(gè)事件的發(fā)生。14簡(jiǎn)述創(chuàng)建MFC的工作線程所必需的步驟。(1)是編程實(shí)現(xiàn)控制函數(shù)。(2)是創(chuàng)建并啟動(dòng)工作線程。(3)創(chuàng)建工作線程的例子。(4)創(chuàng)建工作線程的一般模式。15如何正常終止線程?如何提前終止線程?答:正常終止線程:執(zhí)行完畢時(shí)
21、退出控制函數(shù),并返回三個(gè)用來(lái)表示終止原因的值即可。 提前終止線程:從線程內(nèi)調(diào)用AfxEndThread函數(shù),就可以強(qiáng)迫線程終止。16非阻塞套接字的五種“套接字I/O模型”:select(選擇)、WSAAsyncSelect(異步選擇)、WSAEventSelect(事件選擇)、Overlapped I/O(重疊式I/O)以及Completion port(完成端口)。17 WSAAsyncSelect異步I/O模型的編程步驟用CreateWindow函數(shù)創(chuàng)建一個(gè)窗口,并為該窗口提供一個(gè)窗口回調(diào)例程。調(diào)用WSAAsyncSelect函數(shù)創(chuàng)建套接字,指定關(guān)注的套接字、窗口句柄、打算接收的消息,以及
22、程序感興趣的套接字事件。成功執(zhí)行WSAAsyncSelec函數(shù),就打開(kāi)了窗口的消息通知,并注冊(cè)了事件。WSAAsyncSelec函數(shù)執(zhí)行時(shí),當(dāng)注冊(cè)的套接字事件之一發(fā)生時(shí),指定的窗口會(huì)收到指定的消息,并自動(dòng)執(zhí)行該窗口的回調(diào)例程,可在其中添加自己的代碼,處理相應(yīng)的事件。18 WSAEventSelect事件選擇模型的編程步驟創(chuàng)建事件對(duì)象句柄事件選擇模型要求應(yīng)用程序針對(duì)每一個(gè)套接字,首先創(chuàng)建一個(gè)事件對(duì)象。創(chuàng)建方法是調(diào)用WSACreateEvent函數(shù),定義如下:WSAEVENT WSACreateEvent(void);關(guān)聯(lián)套接字和事件對(duì)象,注冊(cè)關(guān)心的網(wǎng)絡(luò)事件將事件對(duì)象句柄與某個(gè)套接字關(guān)聯(lián)在一起,同
23、時(shí)注冊(cè)感興趣的網(wǎng)絡(luò)事件類型。調(diào)用WSAEventSelect函數(shù),函數(shù)的定義為:int WSAEventSelect(SOCKET s,WSAEVENT hEventObject,long lNetworkEvents); 等待網(wǎng)絡(luò)事件觸發(fā)事件對(duì)象句柄的工作狀態(tài)調(diào)用WSAWaitForMultipleEvents函數(shù),等待網(wǎng)絡(luò)事件觸發(fā)事件對(duì)象句柄的工作狀態(tài)。該函數(shù)的定義:DWORD WSAWaitForMultipleEvents(DWORD cEvents,const WSAEVENT FAR * lphEvents,BOOL fWaitAll,DWORD dwTimeout,BOOL fA
24、lertable); 檢查套接字上所發(fā)生的網(wǎng)絡(luò)事件類型調(diào)用WSAEnumNetworkEvents函數(shù),檢查套接字上發(fā)生了什么類型的網(wǎng)絡(luò)事件。該函數(shù)定義如下:int WSAEnumNetworkEvents(SOCKET s,WSAEVENT hEventObject,LPWSANETWORKEVENTS lpNetworkEvents); 處理網(wǎng)絡(luò)事件在確定了套接字上發(fā)生的網(wǎng)絡(luò)事件類型后,可以根據(jù)不同的情況做出相應(yīng)的處理。完成了對(duì)WSANETWORKEVENTS結(jié)構(gòu)中的事件的處理之后,應(yīng)用程序應(yīng)在所有可用的套接字上,繼續(xù)等待更多的網(wǎng)絡(luò)事件。應(yīng)用程序完成了對(duì)一個(gè)事件對(duì)象的處理后,便應(yīng)調(diào)用WSA
25、CloseEvent函數(shù),釋放由事件句柄使用的系統(tǒng)資源。函數(shù)的定義如下:BOOL WSACloseEvent(WSAEVENT hEvent);該函數(shù)也將一個(gè)事件句柄作為自己唯一的參數(shù),并會(huì)在成功后返回TRUE,失敗后返回FALSE。15什么是HTTP會(huì)話?HTTP會(huì)話周期由哪些階段組成?HTTP是超文本傳輸協(xié)議(Hypertext Transfer Protocol)的簡(jiǎn)稱,HTTP協(xié)議也是基于TCP/IP的客戶/服務(wù)器協(xié)議。主要是用于傳輸文件的協(xié)議。HTTP會(huì)話周期由連接、請(qǐng)求、響應(yīng)和斷開(kāi)4個(gè)階段組成。建立TCP/IP連接Web客戶機(jī)向服務(wù)器發(fā)送HTTP請(qǐng)求服務(wù)器向客戶機(jī)回送HTTP響應(yīng)斷
26、開(kāi)TCP/IP連接16簡(jiǎn)述電子郵件系統(tǒng)的構(gòu)成。答:一個(gè)電子郵件系統(tǒng)包括三個(gè)主要的構(gòu)件,即用戶代理,郵件消息傳輸代理,和電子郵件使用的協(xié)議。1. 多線程的使用。CTestDlg:OnOk( )int i=2; /定義一個(gè)整型數(shù),賦值為2(2分)AfxBeginThread(MyThreadFunc,&i); /開(kāi)啟線程,線程控制函數(shù)為MyThreadFuncUINT MyThreadFunc (LPVOID lpParam) int* i = (int*) lpParam; /取出參數(shù)(2分)switch (*i) case 2: AfxMessageBox(“測(cè)試成功”); /當(dāng)接收到的數(shù)為2
27、時(shí),彈出信息提示框,信息提示框顯示“測(cè)試成功”(3分)break;default:break;return 0;2. select模型的使用。 基于UDP協(xié)議的接收端程序中的recvfrom( )函數(shù)工作在非阻塞模式,使用select選擇模型對(duì)recvfrom( )函數(shù)的調(diào)用進(jìn)行控制。部分代碼已給出,按要求填空。void main(void) SOCKET s=socket(AF_INET,SOCK_DGRAM,0); fd_set Readset; /定義一個(gè)套接字集合變量(2分) FD_ZERO(&Readset); /清除套接字集合變量(2分) FD_SET(s,&Readset); /
28、將套接字s加入到套接字集合中(3分)int Readynum=0;Readynum=select(0,&Readset,NULL,NULL,NULL);if (Readynum0) if( FD_ISSET(s,&Readset) )/判斷套接字s是否還在套接字集合中(3分) recvfrom(s,buf,256,0,(sockaddr*)&from,&fromlength); 1. 設(shè)計(jì)一個(gè)文件拷貝的程序(基于對(duì)話框的工程),實(shí)現(xiàn)本地文件的移動(dòng)。自行設(shè)計(jì)界面,包括填寫(xiě)源文件路徑和目標(biāo)文件路徑,拷貝按鈕。(4分,如果只有文字描述,沒(méi)有繪制圖形,給3分)寫(xiě)出對(duì)話框界面上控件對(duì)應(yīng)的變量。(變量名可
29、以自擬)(2分)為IDC_EDIT_SOURCE_PATH添加VALUE類型的CString變量m_strSource(1分,變量名自擬)為IDC_EDIT_TARGET_PATH添加VALUE類型的CString變量m_strTar(1分,變量名自擬)寫(xiě)出拷貝按鈕的處理函數(shù)。(4分)UpdateData(TRUE); (2分)CopyFile(m_strSourc,m_strTar,FALSE); (2分)3. 編寫(xiě)點(diǎn)對(duì)點(diǎn)通信的接收端程序,使用UDP協(xié)議。要求如下:遵循無(wú)連接的套接字編程流程;端口取值7000;輸出接收到的信息。#include#include#pragma comment(lib,ws2_32.lib)/以上三句可以不寫(xiě)void main(void)sockaddr_in from,bind;/變量名可自定義WSADATA wsdata;WSAStartup(MAKEWORD(2,0),&wsdata);(1分)SOCKET s=socket(AF_INET,SOCK_DGRAM,0);(1分)bind.sin_family=AF_INET;(1分) bind.sin_addr.s_addr=inet_addr(6);(1分)/地址可
溫馨提示
- 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ù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 堰塘安全護(hù)欄施工方案
- 3好豎井安全施工方案
- led樓頂發(fā)光字安全施工方案
- 辦戶口的申請(qǐng)書(shū)
- 策劃美食狂歡節(jié)
- 緩減訴訟費(fèi)申請(qǐng)書(shū)
- 申請(qǐng)書(shū) 英文格式
- 督導(dǎo)隊(duì)申請(qǐng)書(shū)
- 導(dǎo)游資格-2025導(dǎo)游資格證模擬考試
- 學(xué)校吃飯申請(qǐng)書(shū)
- 2024年09月2024渤海銀行天津?yàn)I海新區(qū)分行校園招聘筆試歷年參考題庫(kù)附帶答案詳解
- 2024低血糖的急救診斷和治療
- 期末考試成績(jī)分析報(bào)告課件
- 兒童哮喘的防治與治療
- 新時(shí)代中國(guó)特色社會(huì)主義理論與實(shí)踐2024版研究生教材課件全集6章
- 學(xué)校安全教師培訓(xùn)
- 信息經(jīng)濟(jì)學(xué) 課件(1至6章)
- 金融警示教育案例
- 反恐防暴器械與戰(zhàn)術(shù)應(yīng)用講解
- 中小學(xué)校食品安全與膳食經(jīng)費(fèi)管理工作指引
- 2024落實(shí)意識(shí)形態(tài)責(zé)任清單及風(fēng)險(xiǎn)點(diǎn)臺(tái)賬
評(píng)論
0/150
提交評(píng)論