天堂888-欧美黄色小说-熟睡侵犯の奶水授乳在线-初尝情欲h名器av-亚洲天堂免费视频-日韩五十路-免费在线国产-国产又大又黄又粗-久草导航-色播导航-亚洲免费资源-熟女一区二区三区视频-亚洲美女视频在线-亚洲成人福利视频-婷婷精品在线-亚洲综合p-中文字幕 日本-亚洲骚片-亚洲自拍偷拍网-国产农村妇女精品一区二区-午夜中出-久久精品国产精品亚洲毛片-91精品毛片-99爱视频在线-狠狠操亚洲-美女让人操-里番本子纯肉侵犯肉全彩无码-999偷拍

網絡編程中的超時檢測詳細過程說明[2]

互聯網技術 責任編輯:leton2008 2011-01-10

摘要:if(SELECT(sockfd+1,&rdfds,NULL,NULL,&tv)==0){超時處理}……三、設置定時器這種方法的原理是在從套接字接收數據之前先設置8秒鐘的定時器。如果8秒鐘內沒有數據到來,內核產生的SIGALRM信號會中斷當前的讀操作。我們知道設置信號捕捉函數可以用signal函數或是sigaction函數。但這里只能使用sig

  if (SELECT(sockfd+1, &rdfds, NULL, NULL, &tv) == 0)

  {

  超時處理

  }

  ……

  三、 設置定時器

  這種方法的原理是在從套接字接收數據之前先設置8秒鐘的定時器。如果8秒鐘內沒有數據到來,內核產生的SIGALRM信號會中斷當前的讀操作。我們知道設置信號捕捉函數可以用signal函數或是sigaction函數。但這里只能使用sigaction函數,因為signal設置的信號處理函數執行完后會重新執行被中斷的操作。參考代碼如下:

  void handler(int signo) // 自定義SIGALRM信號處理函數

  {

  return;

  }

  struct sigaction act; // 描述信號行為的變量

  ……

  sigaction(SIGALRM, NULL, &act); // 獲取SIGALRM信號的屬性

  act.sa_handler = handler; // 設置SIGALRM信號的處理函數

  act.sa_flags &= ~SA_RESTART; // 關閉重啟被中斷操作的選項

  sigaction(SIGALRM, &act, NULL); // 設置SIGALRM信號的屬性

  alarm(8); // 設置8秒鐘的定時器

  ……

  雖然我們是以套接字的讀操作為例,實際上在很多類似的情況中,大家都可以酌情采取上面介紹的方法。巧妙的運用所學知識會讓你的程序更加靈活和人性化。

[1]  [2]  

更多資料
更多課程
更多真題
溫馨提示:因考試政策、內容不斷變化與調整,本網站提供的以上信息僅供參考,如有異議,請考生以權威部門公布的內容為準!

通信工程師備考資料免費領取

去領取

專注在線職業教育25年

信息系統項目管理師

信息系統項目管理師

信息系統項目管理師

!
咨詢在線老師!