<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

    主站蜘蛛池模板: 欧美精品888| 99久久精品久久久久久清纯| 亚洲国产精品自在线一区二区| 亚洲精品无码专区在线播放| 久久se精品一区二区| 久久亚洲欧美国产精品| 欧美精品91欧美日韩操| 自拍偷在线精品自拍偷无码专区| 国产欧美精品一区二区三区| 亚洲&#228;v永久无码精品天堂久久 | 亚洲精品视频久久久| 87国产私拍福利精品视频| 国产精品熟女高潮视频| 亚洲成人国产精品| 国产亚洲午夜高清国产拍精品| 精品视频在线v| 久久夜色精品国产噜噜亚洲AV| 久久人人超碰精品CAOPOREN| 国产精品欧美久久久久无广告| 久久成人影院精品777| 91久久精品91久久性色| 精品久久无码中文字幕| 日韩精品区一区二区三VR | 国产乱子伦精品免费视频 | 精品人妻无码专区中文字幕| 2021国产精品视频网站| 欧美+亚洲+精品+三区| 国产精品夜色一区二区三区| 国产精品麻豆高清在线观看| 国产成人精品天堂| 99re6这里有精品热视频| 孩交VIDEOS精品乱子| 久久国产热精品波多野结衣AV| 亚洲AV无码精品色午夜果冻不卡| 亚洲日韩精品一区二区三区| 宅男宅女精品国产AV天堂| 亚洲精品专区| 亚洲国产精品高清久久久| 日韩精品无码熟人妻视频| 无码精品国产VA在线观看DVD| 无码国产精品一区二区免费模式|