網路程式設計實習報告
通過理論聯絡實際,鞏固所學的知識,提高處理實際問題的能力,併為自己能順利與社會環境接軌做準備。[實習任務]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
while(1)
{ 設定監聽讀寫檔案描述符(FD_*);
呼叫select;
如果是傾聽套接字就緒,說明一個新的連線請求建立
建立連線(accept);
加入到監聽檔案描述符中去;
否則說明是一個已經連線過的描述符
進行操作(read或者write); }
多路複用I/O
-
工程個人實習報告範文
在不斷進步的時代,報告對我們來說並不陌生,我們在寫報告的時候要注意語言要準確、簡潔。你知道怎樣寫報告才能寫的好嗎?下面是小編為大家收集的工程個人實習報告範文,歡迎大家分享。工程個人實習報告範文1作為一名剛剛接觸專業知識的大學生來說,如果在學習專業課之...
-
優秀實習報告模板
在現實生活中,越來越多的事務都會使用到報告,其在寫作上有一定的技巧。相信很多朋友都對寫報告感到非常苦惱吧,下面是小編整理的優秀實習報告模板,歡迎閱讀與收藏。優秀實習報告模板1一、實習目的1.通過在藥廠車間的參觀學習,瞭解車間的一些基本裝置,車間佈局等。2....
-
【優】電視臺實習報告
在不斷進步的時代,大家逐漸認識到報告的重要性,通常情況下,報告的內容含量大、篇幅較長。寫起報告來就毫無頭緒?以下是小編整理的電視臺實習報告,歡迎閱讀與收藏。一、實習目的希望通過本次實習,提高自己的思想文化水平、語言表達能力和實際工作中的動手能力。通過理...
-
操作員實習報告
在經濟發展迅速的今天,報告與我們愈發關係密切,其在寫作上具有一定的竅門。其實寫報告並沒有想象中那麼難,以下是小編為大家整理的操作員實習報告,歡迎閱讀與收藏。操作員實習報告1一、實習目的實習目的是,通過計算機操作員相關工作崗位實習使我瞭解以後再計算機操...