欧美另类日韩中文色综合,天堂va亚洲va欧美va国产,www.av在线播放,大香视频伊人精品75,奇米777888,欧美日本道免费二区三区,中文字幕亚洲综久久2021

網(wǎng)絡(luò)編程實(shí)習(xí)報(bào)告

時(shí)間:2021-07-04 14:05:18 實(shí)習(xí)報(bào)告 我要投稿

網(wǎng)絡(luò)編程實(shí)習(xí)報(bào)告

[實(shí)習(xí)目的]

     通過理論聯(lián)系實(shí)際,鞏固所學(xué)的知識(shí),提高處理實(shí)際問題的能力,并為自己能順利與社會(huì)環(huán)境接軌做準(zhǔn)備。[實(shí)習(xí)任務(wù)]Linux下網(wǎng)絡(luò)服務(wù)器開發(fā)(基于C語言);本文總結(jié)了我對(duì)Linux下網(wǎng)絡(luò)服務(wù)器模型的認(rèn)識(shí)。[實(shí)習(xí)內(nèi)容]一.循環(huán)服務(wù)器1.循環(huán)服務(wù)器在同一個(gè)時(shí)刻只可以響應(yīng)一個(gè)客戶端的請(qǐng)求,對(duì)多個(gè)客戶程序的處理是采用循環(huán)的方式進(jìn)行; 2. UDP循環(huán)服務(wù)器的實(shí)現(xiàn)非常簡單:UDP服務(wù)器每次從套接字上讀取一個(gè)客戶端的請(qǐng)求,處理, 然后將結(jié)果返回給客戶機(jī);2.1.算法如下(UDP服務(wù)器):     socket(...);

網(wǎng)絡(luò)編程實(shí)習(xí)報(bào)告

   bind(...);

   while(1)

   {

      recvfrom(...);

      process(...);

      sendto(...);

   }3. TCP循環(huán)服務(wù)器的實(shí)現(xiàn)也不難:TCP服務(wù)器接受一個(gè)客戶端的連接,然后處理,完成了這個(gè)客戶的所有請(qǐng)求后,斷開連接;3.1. 算法如下(TCP服務(wù)器):   

   socket(...);

   bind(...);

   listen(...);

   while(1)

   {

       accept(...);

       while(1)

      {

         read(...);

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

      }

      close(...);

   }3.2. TCP循環(huán)服務(wù)器一次只能處理一個(gè)客戶端的請(qǐng)求.只有在這個(gè)客戶的所有請(qǐng)求都滿足后, 服務(wù)器才可以繼續(xù)后面的請(qǐng)求.這樣如果有一個(gè)客戶端占住服務(wù)器不放時(shí),其它的客戶機(jī)都不能工作了.因此,TCP服務(wù)器一般很少用循環(huán)服務(wù)器模型的.·   ·····     二. 并發(fā)服務(wù)器1. 為了彌補(bǔ)循環(huán)TCP服務(wù)器的缺陷,人們又想出了并發(fā)服務(wù)器的模型。 并發(fā)服務(wù)器的思想是每一個(gè)客戶機(jī)的請(qǐng)求并不由服務(wù)器直接處理,而是服務(wù)器創(chuàng)建一個(gè) 子進(jìn)程來處理;2.使用并發(fā)服務(wù)器可以使服務(wù)器進(jìn)程在同一個(gè)時(shí)刻有多個(gè)子進(jìn)程和不同的客戶程序連接、通信;在客戶程序看來,服務(wù)器可以同時(shí)并發(fā)地處理多個(gè)客戶的請(qǐng)求; 3.算法如下(TCP服務(wù)器):socket(...);

  bind(...);

  listen(...);

  while(1)

  {

·  accept(...);

·  if(fork(..)==0)

·  {

·· close(...);while(1)

··  {·   

 read(...);

··      process(...);

··      write(...);

··   }

··   close(...);

··   exit(...);

·   }

·  close(...);

  }  4. TCP并發(fā)服務(wù)器可以解決TCP循環(huán)服務(wù)器客戶機(jī)獨(dú)占服務(wù)器的情況,改善了對(duì)客戶程序的響應(yīng)速度; 不過也同時(shí)帶來了一個(gè)不小的`問題:為了響應(yīng)客戶機(jī)的請(qǐng)求,服務(wù)器要?jiǎng)?chuàng)建子進(jìn)程來處理, 而創(chuàng)建子進(jìn)程是一種非常消耗資源的操作,這明顯增加了系統(tǒng)調(diào)度的開銷;5. 為了解決創(chuàng)建子進(jìn)程帶來的系統(tǒng)資源消耗,人們又想出了多路復(fù)用I/O模型.5.1.該模型一般用函數(shù)select和相關(guān)的四個(gè)宏定義: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. 一般的來說當(dāng)我們?cè)谙蛭募x寫時(shí),進(jìn)程有可能在讀寫時(shí)候阻塞,直到一定的條件滿足. 比如我們從一個(gè)套接字讀數(shù)據(jù)時(shí),可能緩沖區(qū)里面沒有數(shù)據(jù)可讀(通信的對(duì)方還沒有 發(fā)送數(shù)據(jù)過來),這個(gè)時(shí)候我們的讀調(diào)用就會(huì)等待(阻塞)直到有數(shù)據(jù)可讀.如果我們不 希望阻塞,我們的一個(gè)選擇是把socket設(shè)置為非阻塞模式來實(shí)現(xiàn);int socketfd;socketfd=socket(AF_INET,SOCK_STREAM,0);fcntl(socketfd,F_SETFL,O_NONBLOCK);通過設(shè)置socket為非阻塞模式,可以實(shí)現(xiàn)“輪循”多個(gè)socket,當(dāng)企圖從一個(gè)沒有數(shù)據(jù)等待處理的非阻塞socket讀取數(shù)據(jù)時(shí),函數(shù)立即返回,但是這種“輪循”會(huì)使CPU處于忙等待方式,降低了性能,select函數(shù)解決了這個(gè)問題;5.3. 在我們調(diào)用select時(shí)進(jìn)程會(huì)一直阻塞直到以下的一種情況發(fā)生. 1)有文件可以讀.2)有文件可以寫.3)超時(shí)所設(shè)置的時(shí)間到;5.4.算法如下(多路復(fù)用I/O模型):     初始化(socket,bind,listen);·  

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

網(wǎng)絡(luò)編程實(shí)習(xí)報(bào)告01-15

網(wǎng)絡(luò)編程實(shí)習(xí)報(bào)告 -管理資料01-01

測(cè)量編程實(shí)習(xí)報(bào)告08-31

數(shù)控編程實(shí)習(xí)報(bào)告09-29

數(shù)控編程實(shí)習(xí)報(bào)告06-05

java 網(wǎng)絡(luò)編程 面試01-13

網(wǎng)絡(luò)編程的就業(yè)前景01-13

數(shù)控編程實(shí)習(xí)報(bào)告范文01-15

數(shù)控編程的實(shí)習(xí)報(bào)告參考01-15