網(wǎng)絡(luò)編程實(shí)習(xí)報(bào)告范文_第1頁(yè)
網(wǎng)絡(luò)編程實(shí)習(xí)報(bào)告范文_第2頁(yè)
網(wǎng)絡(luò)編程實(shí)習(xí)報(bào)告范文_第3頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、網(wǎng)絡(luò)編程實(shí)習(xí)報(bào)告范文 實(shí)習(xí)目的 通過(guò)理論聯(lián)系實(shí)際,鞏固所學(xué)的知識(shí),提高處理實(shí)際問(wèn)題的能力,并為自己 能順利與社會(huì)環(huán)境接軌做準(zhǔn)備。 實(shí)習(xí)任務(wù) linu 絡(luò)服務(wù)器開(kāi)發(fā);本文總結(jié)了我對(duì) linu 絡(luò)服務(wù)器模型的認(rèn)識(shí)。 實(shí)習(xí)內(nèi)容 一.循環(huán)服務(wù)器 1.循環(huán)服務(wù)器在同一個(gè)時(shí) 刻只可以響應(yīng)一個(gè)客戶端的請(qǐng)求,對(duì)多個(gè)客戶程序的處理是采用循環(huán)的方式進(jìn) 行; 2. udp 循環(huán)服務(wù)器的實(shí)現(xiàn)非常簡(jiǎn)單 :udp 服務(wù)器每次從套接字上讀取一個(gè) 客戶端的請(qǐng)求 , 處理 , 然后將結(jié)果返回給客戶機(jī); 2.1. 算法如下: socket(.);bind(.);while(1)recvfrom(.);process(.);sen

2、dto(.);3. tcp 循環(huán)服務(wù)器的實(shí)現(xiàn)也不難 :tcp 服務(wù)器接受一個(gè)客戶端的連接 , 然后 處理,完成了這個(gè)客戶的所有請(qǐng)求后 ,斷開(kāi)連接; 3.1. 算法如下 :socket(.);bind(.);listen(.);while(1)accept(.);while(1)read(.);process(.);write(.);close(.);3.2. tcp 循環(huán)服務(wù)器一次只能處理一個(gè)客戶端的請(qǐng)求 . 只有在這個(gè)客戶的 所有請(qǐng)求都滿足后 , 服務(wù)器才可以繼續(xù)后面的請(qǐng)求 . 這樣如果有一個(gè)客戶端占住 服務(wù)器不放時(shí),其它的客戶機(jī)都不能工作了因此,tcp服務(wù)器一般很少用循環(huán)服務(wù)器模型的 .二

3、. 并發(fā)服務(wù)器 1. 為了彌補(bǔ)循環(huán) tcp 服務(wù)器的缺陷 ,人們又想出了 并發(fā)服務(wù)器的模型。 并發(fā)服務(wù)器的思想是每一個(gè)客戶機(jī)的請(qǐng)求并不由服務(wù)器直 接處理,而是服務(wù)器創(chuàng)建一個(gè) 子進(jìn)程來(lái)處理; 2.使用并發(fā)服務(wù)器可以使服務(wù)器進(jìn) 程在同一個(gè)時(shí)刻有多個(gè)子進(jìn)程和不同的客戶程序連接、通信;在客戶程序看來(lái), 服務(wù)器可以同時(shí)并發(fā)地處理多個(gè)客戶的請(qǐng)求; 3. 算法如下: socket(.);bind(.);listen(.);while(1)accept(.);if(fork(.)=0)close(.);while(1)read(.);process(.);write(.);close(.);exit(.);c

4、lose(.); 4. tcp 并發(fā)服務(wù)器可以解決 tcp 循環(huán)服務(wù)器客戶機(jī)獨(dú)占服務(wù)器的情 況,改善了對(duì)客戶程序的響應(yīng)速度; 不過(guò)也同時(shí)帶來(lái)了一個(gè)不小的問(wèn)題:為了 響應(yīng)客戶機(jī)的請(qǐng)求 , 服務(wù)器要?jiǎng)?chuàng)建子進(jìn)程來(lái)處理, 而創(chuàng)建子進(jìn)程是一種非常消耗 資源的操作,這明顯增加了系統(tǒng)調(diào)度的開(kāi)銷; 5. 為了解決創(chuàng)建子進(jìn)程帶來(lái)的系 統(tǒng)資源消耗 , 人們又想出了多路復(fù)用 i/o 模型 .5.1. 該模型一般用函數(shù) select 和相 關(guān)的四個(gè)宏定義:ds,structtimeval*timeout)voidfd_set(intfd,fd_set*fdset)voidfd_clr(intfd,fd_set*fds

5、et)voidfd_zero(fd_set *fdset)intfd_isset(intfd,fd_set*fdset)5.2.一般的來(lái)說(shuō)當(dāng)我們?cè)谙蛭募x寫時(shí),進(jìn)程有可能在讀寫時(shí)候阻塞 , 直到一定的條件滿足 . 比如我們從一個(gè)套接 字讀數(shù)據(jù)時(shí) , 可能緩沖區(qū)里面沒(méi)有數(shù)據(jù)可讀 ( 通信的對(duì)方還沒(méi)有 發(fā)送數(shù)據(jù)過(guò)來(lái) ), 這個(gè)時(shí)候我們的讀調(diào)用就會(huì)等待 (阻塞)直到有數(shù)據(jù)可讀 .如果我們不 希望阻塞 , 我們的一個(gè)選擇是把 socket 設(shè)置為非阻塞模式來(lái)實(shí)現(xiàn); int socketfd;socketfd=socket(af_inet,sock_stream,0);fcntl(socketfd,f_s etfl,o_nonblock); 通過(guò)設(shè)置 socket 為非阻塞模式,可以實(shí)現(xiàn)“輪循”多個(gè) socket ,當(dāng)企圖從一個(gè)沒(méi)有數(shù)據(jù)等待處理的非阻塞 socket 讀取數(shù)據(jù)時(shí),函數(shù)立即 返回,但是這種“輪循”會(huì)使 cpu 處于忙等待方式,降低了性能, select 函數(shù)解 決了這個(gè)問(wèn)題; 5.3. 在我們調(diào)用 select 時(shí)進(jìn)程會(huì)一直阻塞直到以下的一種情況 發(fā)生. 1) 有文件可以讀 .2) 有文件可以寫 .3) 超時(shí)所設(shè)置的時(shí)間到; 5.4. 算法如 下:初始化 (socket,bind,listen年護(hù)理實(shí)習(xí)報(bào)告范文精選大學(xué)生施工實(shí)習(xí)報(bào)告范文2018 寒假土木實(shí)習(xí)報(bào)告年有關(guān)大學(xué)生社

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論