網路編程實習報告範文

[實習目的

通過理論聯繫實際,鞏固所學的知識,提高處理實際問題的能力,並為自己能順利與社會環境接軌做準備。[實習任務]linux下網路伺服器開發;本文總結了我對linux下網路伺服器模型的認識。[實習內容]一.循環伺服器1.循環伺服器在同一個時刻只可以回響一個客戶端的請求,對多個客戶程式的處理是採用循環的方式進行; 2. udp循環伺服器的實現非常簡單:udp伺服器每次從套接字上讀取一個客戶端的請求,處理, 然後將結果返回給客戶機;2.1.算法如下: socket(...); 

bind(...); 

while(1) 

recvfrom(...); 

process(...); 

sendto(...); 

}3. tcp循環伺服器的實現也不難:tcp伺服器接受一個客戶端的連線,然後處理,完成了這個客戶的所有請求後,下線;3.1. 算法如下: 

socket(...); 

bind(...); 

listen(...); 

while(1) 

accept(...); 

while(1) 

read(...); 

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

close(...); 

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

bind(...); 

listen(...); 

while(1) 

accept(...); 

if(fork(..)==0) 

close(...);while(1) 

{

read(...); 

process(...); 

write(...); 

close(...); 

exit(...); 

close(...); 

}4. tcp並發伺服器可以解決tcp循環伺服器客戶機獨占伺服器的情況,改善了對客戶程式的回響速度; 不過也同時帶來了一個不小的問題:為了回響客戶機的請求,伺服器要創建子進程來處理, 而創建子進程是一種非常消耗資源的操作,這明顯增加了系統調度的開銷;5. 為了解決創建子進程帶來的系統資源消耗,人們又想出了多路復用i/o模型.5.1.該模型一般用函式select和相關的四個宏定義: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. 一般的來說當我們在向檔案讀寫時,進程有可能在讀寫時候阻塞,直到一定的條件滿足. 比如我們從一個套接字讀數據時,可能緩衝區裡面沒有數據可讀(通信的對方還沒有 傳送數據過來),這個時候我們的讀調用就會等待(阻塞)直到有數據可讀.如果我們不 希望阻塞,我們的一個選擇是把socket設定為非阻塞模式來實現;int socketfd;socketfd=socket(af_inet,sock_stream,0);fcntl(socketfd,f_setfl,o_nonblock);通過設定socket為非阻塞模式,可以實現“輪循”多個socket,當企圖從一個沒有數據等待處理的非阻塞socket讀取數據時,函式立即返回,但是這種“輪循”會使cpu處於忙等待方式,降低了性能,select函式解決了這個問題;5.3. 在我們調用select時進程會一直阻塞直到以下的一種情況發生. 1)有檔案可以讀.2)有檔案可以寫.3)逾時所設定的時間到;5.4.算法如下: 初始化(socket,bind,listen

2024年護理實習報告範文精選
大學生施工實習報告範文
2018寒假土木實習報告
2024年有關大學生社會工作實習總結推薦
在體育用品公司實習報告範文
2024年土木工程測量實習報告
2018網路客服實習報告範文
2024年行銷專業市場調查實習報告範文
感染科實習護士實習報告範文
行政助理實習報告範文3000字