<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精品久久精品| 538国产精品一区二区在线| 亚洲av无码国产精品色午夜字幕 | 亚洲精品视频在线| 国产精品99久久免费观看| 人妻少妇精品中文字幕AV| 真实国产精品vr专区| 日韩精品电影一区亚洲| 久久精品免费大片国产大片| 国产精品高清免费网站| 在线观看91精品国产入口| 丝袜美腿国产精品视频一区| 国产福利91精品一区二区三区| 国内精品伊人久久久久av一坑 | 国产精品无码A∨精品影院| 无码精品人妻一区二区三区人妻斩| 蜜臀精品国产高清在线观看| 精品午夜国产人人福利| 国产精品高清在线观看| 99久久精品国产一区二区三区| 久久精品国产一区| 久久精品9988| 国产91久久精品一区二区| 东京热TOKYO综合久久精品| 精品综合久久久久久888蜜芽| 精品无码国产一区二区三区AV| 久久Av无码精品人妻系列| 国产成人久久精品一区二区三区|