• <sub id="h4knl"><ol id="h4knl"></ol></sub>
    <sup id="h4knl"></sup>
      <sub id="h4knl"></sub>

      <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
      1. <strong id="h4knl"></strong>

      2. 網(wǎng)絡(luò)編程實習報告

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

        網(wǎng)絡(luò)編程實習報告

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

        網(wǎng)絡(luò)編程實習報告

          [實習目的]

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

          [實習任務(wù)]

          Linux下網(wǎng)絡(luò)服務(wù)器開發(fā);本文總結(jié)了我對Linux下網(wǎng)絡(luò)服務(wù)器模型的認識。

          [實習內(nèi)容]

          一、循環(huán)服務(wù)器

          1、循環(huán)服務(wù)器在同一個時刻只可以響應(yīng)一個客戶端的請求,對多個客戶程序的處理是采用循環(huán)的方式進行。

          2、UDP循環(huán)服務(wù)器的實現(xiàn)非常簡單:UDP服務(wù)器每次從套接字上讀取一個客戶端的請求,處理,然后將結(jié)果返回給客戶機。

          2.1、算法如下:socket(...);

          bind(...);

          while(1)

          {

          recvfrom(...);

          process(...);

          sendto(...);

          }

          3、TCP循環(huán)服務(wù)器的實現(xiàn)也不難:TCP服務(wù)器接受一個客戶端的連接,然后處理,完成了這個客戶的所有請求后,斷開連接。

          3.1、算法如下:

          socket(...);

          bind(...);

          listen(...);

          while(1)

          {

          accept(...);

          while(1)

          {

          read(...);

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

          }

          close(...);

          }

          3.2、TCP循環(huán)服務(wù)器一次只能處理一個客戶端的請求。只有在這個客戶的所有請求都滿足后,服務(wù)器才可以繼續(xù)后面的請求。這樣如果有一個客戶端占住服務(wù)器不放時,其它的客戶機都不能工作了。因此,TCP服務(wù)器一般很少用循環(huán)服務(wù)器模型的。

          二、并發(fā)服務(wù)器

          1、為了彌補循環(huán)TCP服務(wù)器的缺陷,人們又想出了并發(fā)服務(wù)器的模型。并發(fā)服務(wù)器的思想是每一個客戶機的請求并不由服務(wù)器直接處理,而是服務(wù)器創(chuàng)建一個子進程來處理。

          2、使用并發(fā)服務(wù)器可以使服務(wù)器進程在同一個時刻有多個子進程和不同的客戶程序連接、通信;在客戶程序看來,服務(wù)器可以同時并發(fā)地處理多個客戶的請求。

          3、算法如下:socket(...);

          bind(...);

          listen(...);

          while(1)

          {

          accept(...);

          if(fork(..)==0)

          {

          close(...);while(1)

          {

          read(...);

          廣東應(yīng)屆生實習報告網(wǎng)在線編輯整理本文。

          process(...);

          write(...);

          }

          close(...);

          exit(...);

          }

          close(...);

          }

          4、TCP并發(fā)服務(wù)器可以解決TCP循環(huán)服務(wù)器客戶機獨占服務(wù)器的情況,改善了對客戶程序的響應(yīng)速度;不過也同時帶來了一個不小的問題:為了響應(yīng)客戶機的請求,服務(wù)器要創(chuàng)建子進程來處理,而創(chuàng)建子進程是一種非常消耗資源的操作,這明顯增加了系統(tǒng)調(diào)度的開銷。

          5、為了解決創(chuàng)建子進程帶來的系統(tǒng)資源消耗,人們又想出了多路復用I/O模型。

          5.1、該模型一般用函數(shù)select和相關(guān)的四個宏定義: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、一般的來說當我們在向文件讀寫時,進程有可能在讀寫時候阻塞,直到一定的條件滿足。

          比如我們從一個套接字讀數(shù)據(jù)時,可能緩沖區(qū)里面沒有數(shù)據(jù)可讀(通信的對方還沒有發(fā)送數(shù)據(jù)過來),這個時候我們的讀調(diào)用就會等待(阻塞)直到有數(shù)據(jù)可讀.如果我們不希望阻塞,我們的一個選擇是把socket設(shè)置為非阻塞模式來實現(xiàn);int socketfd;socketfd=socket(AF_INET,SOCK_STREAM,0);fcntl(socketfd,F_SETFL,O_NONBLOCK);通過設(shè)置socket為非阻塞模式,可以實現(xiàn)“輪循”多個socket,當企圖從一個沒有數(shù)據(jù)等待處理的非阻塞socket讀取數(shù)據(jù)時,函數(shù)立即返回,但是這種“輪循”會使CPU處于忙等待方式,降低了性能,select函數(shù)解決了這個問題;

          5.3、在我們調(diào)用select時進程會一直阻塞直到以下的一種情況發(fā)生。

          1)有文件可以讀.

          2)有文件可以寫.

          3)超時所設(shè)置的時間到;

          5.4、算法如下:

          初始化(socket,bind,listen;

          while(1)

          {設(shè)置監(jiān)聽讀寫文件描述符(FD_*);

          調(diào)用select;

          如果是傾聽套接字就緒,說明一個新的連接請求建立;

          建立連接(accept);

          加入到監(jiān)聽文件描述符中去;

          否則說明是一個已經(jīng)連接過的描述符

          進行操作(read或者write);}

          多路復用I/O廣東應(yīng)屆生實習報告網(wǎng)在線編輯整理本文。

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

          三、I/O模型

          1、網(wǎng)絡(luò)服務(wù)器模型根據(jù)I/O模型的不同實現(xiàn)而來的。

          2、I/O模型分為同步I/O和異步I/O;同步I/O又包括阻塞I/O、非阻塞I/O、信號驅(qū)動I/O、多路復用I/O;可根據(jù)不同的要求利用不同的I/O模型實現(xiàn)不同是網(wǎng)絡(luò)服務(wù)器。

          [實習心得]

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

        【網(wǎng)絡(luò)編程實習報告】相關(guān)文章:

        網(wǎng)絡(luò)編程簡歷范文07-26

        編程實習心得09-29

        網(wǎng)絡(luò)編程專業(yè)個人簡歷模板08-09

        網(wǎng)絡(luò)實習報告11-24

        網(wǎng)絡(luò)的實習報告11-28

        網(wǎng)絡(luò)優(yōu)化實習報告10-23

        網(wǎng)絡(luò)編輯實習報告06-09

        網(wǎng)絡(luò)認識實習報告02-15

        關(guān)于網(wǎng)絡(luò)的實習報告02-14

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码
      3. <sub id="h4knl"><ol id="h4knl"></ol></sub>
        <sup id="h4knl"></sup>
          <sub id="h4knl"></sub>

          <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
          1. <strong id="h4knl"></strong>

          2. 欧美性爱在线免费精品 | 亚洲国产国语高清在线网址 | 亚洲午夜看片福利717 | 中文字幕制服丝袜第57页 | 亚洲人成网站在线播放vr | 亚洲顶级片在线免费播放 |