97超级碰碰碰久久久_精品成年人在线观看_精品国内女人视频免费观_福利一区二区久久

網(wǎng)絡(luò)編程實習(xí)報告

時間:2022-06-22 01:44:30 實習(xí)報告 我要投稿
  • 相關(guān)推薦

網(wǎng)絡(luò)編程實習(xí)報告

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

網(wǎng)絡(luò)編程實習(xí)報告

bind(...);

while(1)

{

recvfrom(...);

process(...);

sendto(...);

}3. TCP循環(huán)服務(wù)器的實現(xiàn)也不難:TCP服務(wù)器接受一個客戶端的連接,然后處理,完成了這個客戶的所有請求后,斷開連接;3.1. 算法如下:

socket(...);

bind(...);

listen(...);

while(1)

{

accept(...);

while(1)

{

read(...);

process(...);write(...);

}

close(...);

}3.2. TCP循環(huán)服務(wù)器一次只能處理一個客戶端的請求.只有在這個客戶的所有請求都滿足后, 服務(wù)器才可以繼續(xù)后面的請求.這樣如果有一個客戶端占住服務(wù)器不放時,其它的客戶機都不能工作了.因此,TCP服務(wù)器一般很少用循環(huán)服務(wù)器模型的. 二. 并發(fā)服務(wù)器1. 為了彌補循環(huán)TCP服務(wù)器的缺陷,人們又想出了并發(fā)服務(wù)器的模型。 并發(fā)服務(wù)器的思想是每一個客戶機的請求并不由服務(wù)器直接處理,而是服務(wù)器創(chuàng)建一個 子進(jìn)程來處理;2.使用并發(fā)服務(wù)器可以使服務(wù)器進(jìn)程在同一個時刻有多個子進(jìn)程和不同的客戶程序連接、通信;在客戶程序看來,服務(wù)器可以同時并發(fā)地處理多個客戶的請求; 3.算法如下:socket(...);

bind(...);

listen(...);

while(1)

{

accept(...);

if(fork(..)==0)

{

close(...);while(1)

{

read(...);

廣東應(yīng)屆生聘才網(wǎng)在線編輯整理本文。

process(...);

write(...);

}

close(...);

exit(...);

}

close(...);

} 4. TCP并發(fā)服務(wù)器可以解決TCP循環(huán)服務(wù)器客戶機獨占服務(wù)器的情況,改善了對客戶程序的響應(yīng)速度; 不過也同時帶來了一個不小的問題:為了響應(yīng)客戶機的請求,服務(wù)器要創(chuàng)建子進(jìn)程來處理, 而創(chuàng)建子進(jìn)程是一種非常消耗資源的操作,這明顯增加了系統(tǒng)調(diào)度的開銷;5. 為了解決創(chuàng)建子進(jìn)程帶來的系統(tǒng)資源消耗,人們又想出了多路復(fù)用I/O模型.5.1.該模型一般用函數(shù)select和相關(guān)的四個宏定義:int select(int fd,fd_set *readfds,fd_set *writefds,fd_set *exceptfds,struct timeval *timeout)

void FD_SET(int fd,fd_set *fdset)

void FD_CLR(int fd,fd_set *fdset)

void FD_ZERO(fd_set *fdset)

int FD_ISSET(int fd,fd_set *fdset)5.2. 一般的來說當(dāng)我們在向文件讀寫時,進(jìn)程有可能在讀寫時候阻塞,直到一定的條件滿足. 比如我們從一個套接字讀數(shù)據(jù)時,可能緩沖區(qū)里面沒有數(shù)據(jù)可讀(通信的對方還沒有 發(fā)送數(shù)據(jù)過來),這個時候我們的讀調(diào)用就會等待(阻塞)直到有數(shù)據(jù)可讀.如果我們不 希望阻塞,我們的一個選擇是把socket設(shè)置為非阻塞模式來實現(xiàn);int socketfd;socketfd=socket(AF_INET,SOCK_STREAM,0);fcntl(socketfd,F_SETFL,O_NONBLOCK);通過設(shè)置socket為非阻塞模式,可以實現(xiàn)“輪循”多個socket,當(dāng)企圖從一個沒有數(shù)據(jù)等待處理的非阻塞socket讀取數(shù)據(jù)時,函數(shù)立即返回,但是這種“輪循”會使CPU處于忙等待方式,降低了性能,select函數(shù)解決了這個問題;5.3. 在我們調(diào)用select時進(jìn)程會一直阻塞直到以下的一種情況發(fā)生. 1)有文件可以讀.2)有文件可以寫.3)超時所設(shè)置的時間到;5.4.算法如下: 初始化(socket,bind,listen

while(1)

{ 設(shè)置監(jiān)聽讀寫文件描述符(FD_*);

調(diào)用select;

如果是傾聽套接字就緒,說明一個新的連接請求建立

建立連接(accept);

加入到監(jiān)聽文件描述符中去;

否則說明是一個已經(jīng)連接過的描述符

進(jìn)行操作(read或者write); }

多路復(fù)用I/O


[網(wǎng)絡(luò)編程實習(xí)報告]相關(guān)文章:

1.網(wǎng)絡(luò)管理員實習(xí)報告總結(jié)

【網(wǎng)絡(luò)編程實習(xí)報告】相關(guān)文章:

編程實習(xí)報告07-03

《網(wǎng)絡(luò)編程課程設(shè)計》實習(xí)總結(jié)11-19

測量編程實習(xí)報告07-03

網(wǎng)絡(luò)編程的就業(yè)前景06-26

java 網(wǎng)絡(luò)編程 面試06-28

計算機編程實習(xí)報告06-29

linux網(wǎng)絡(luò)編程面試題06-28

數(shù)控編程報告03-30

計算機編程實習(xí)報告范文07-02

網(wǎng)絡(luò)編程專業(yè)就業(yè)前景5000字06-27