<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • 網絡編程實習報告

    時間:2022-10-09 22:23:32 實習報告范文 我要投稿
    • 相關推薦

    網絡編程實習報告

      一段忙碌又充實的實習生活又告一段落了,相信你一定有很多值得分享的收獲,在實習報告中記錄下這來之不易的成果吧。你所見過的實習報告應該是什么樣的?以下是小編整理的網絡編程實習報告,歡迎閱讀與收藏。

    網絡編程實習報告

      [實習目的]

      通過理論聯系實際,鞏固所學的知識,提高處理實際問題的能力,并為自己能順利與社會環境接軌做準備。

      [實習任務]

      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廣東應屆生實習報告網在線編輯整理本文。

      可以解決資源限制的問題。著模型實際上是將UDP循環模型用在了TCP上面。這也就帶來了一些問題。如由于服務器依次處理客戶的請求,所以可能會導致有的客戶會等待很久。

      三、I/O模型

      1、網絡服務器模型根據I/O模型的不同實現而來的。

      2、I/O模型分為同步I/O和異步I/O;同步I/O又包括阻塞I/O、非阻塞I/O、信號驅動I/O、多路復用I/O;可根據不同的要求利用不同的I/O模型實現不同是網絡服務器。

      [實習心得]

      通過近幾個月的實習,基本上掌握了Linux下C語言網絡編程的一些算法和技巧,提高了自己的能力。

    【網絡編程實習報告】相關文章:

    網絡編程簡歷范文07-26

    編程實習心得09-29

    網絡編程專業個人簡歷模板08-09

    網絡實習報告11-24

    網絡的實習報告11-28

    網絡優化實習報告10-23

    網絡編輯實習報告06-09

    網絡認識實習報告02-15

    關于網絡的實習報告02-14

    主站蜘蛛池模板: 久久99国产精品久久99果冻传媒| 国产精品99精品视频网站| 刺激无码在线观看精品视频| 亚洲欧美激情精品一区二区| 国产成人毛片亚洲精品| www国产精品| 亚洲AV无码久久精品狠狠爱浪潮 | 99久久国产综合精品五月天喷水| 国产精品色内内在线播放| 亚洲精品网站在线观看不卡无广告| 亚洲国产精品久久久久| 国产精品高清一区二区三区| 亚洲av午夜福利精品一区人妖| 无码精品人妻一区二区三区免费| 国产精品日韩欧美在线第3页| 精品乱人伦一区二区三区| 国产三级久久久精品麻豆三级| 午夜精品久久久久久99热| 日韩在线精品一二三区| 久久无码精品一区二区三区| 国产日韩久久久精品影院首页 | 午夜精品射精入后重之免费观看| 欧美亚洲成人精品| 久久亚洲AV永久无码精品| 精品人妻伦一二三区久久| 国产精品一区三区| 国内精品伊人久久久久影院对白 | 精品一区二区久久久久久久网站| 精品欧洲av无码一区二区三区| 久久精品国产亚洲av高清漫画| 无码精品A∨在线观看| 久久夜色精品国产噜噜麻豆| 欧美日韩人妻精品一区二区在线 | 四虎国产精品永久一区| 精品午夜久久福利大片| 精品国产欧美另类一区| 久久99精品国产| 国产高清在线精品一区小说| 国产精品偷伦视频免费观看了| 精品国产一级在线观看| 精品综合久久久久久88小说|