網(wǎng)絡(luò)編程中的超時(shí)檢測(cè)詳細(xì)過(guò)程說(shuō)明[1]

互聯(lián)網(wǎng)技術(shù) 責(zé)任編輯:aa3296602 2011-01-10

摘要:我們?cè)诰W(wǎng)絡(luò)編程中常見(jiàn)的一種做法是:創(chuàng)建好套接字后以阻塞的方式讀寫(xiě),如果沒(méi)有數(shù)據(jù)可讀的話,程序會(huì)一直等待。事實(shí)上,網(wǎng)絡(luò)狀況一直不斷變化,很有可能在通訊過(guò)程中出現(xiàn)網(wǎng)絡(luò)連接斷開(kāi)。我們?cè)诔绦蛑杏斜匾獙?duì)這種情況進(jìn)行檢測(cè),從而及時(shí)做出響應(yīng)。下面介紹幾種常用的超時(shí)檢測(cè)方法(假設(shè)我們要求通過(guò)套接字等待數(shù)據(jù)的最大時(shí)間為8秒):

  我們?cè)诰W(wǎng)絡(luò)編程中常見(jiàn)的一種做法是:創(chuàng)建好套接字后以阻塞的方式讀寫(xiě),如果沒(méi)有數(shù)據(jù)可讀的話,程序會(huì)一直等待。事實(shí)上,網(wǎng)絡(luò)狀況一直不斷變化,很有可能在通訊過(guò)程中出現(xiàn)網(wǎng)絡(luò)連接斷開(kāi)。我們?cè)诔绦蛑杏斜匾獙?duì)這種情況進(jìn)行檢測(cè),從而及時(shí)做出響應(yīng)。下面介紹幾種常用的超時(shí)檢測(cè)方法(假設(shè)我們要求通過(guò)套接字等待數(shù)據(jù)的最大時(shí)間為8秒):

  一、 設(shè)置套接字接收超時(shí)

  setsockopt可以設(shè)置套接字的屬性,其中包括接收超時(shí)時(shí)間。參考代碼如下

  struct timeval tv; // 描述時(shí)間的結(jié)構(gòu)體變量

  ……

  tv.tv_sec = 8;

  tv.tv_usec = 0;

  setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv));

  ……

  二、 多路IO復(fù)用SELECT

  SELECT 函數(shù)通常被用來(lái)實(shí)現(xiàn)多路IO復(fù)用,同樣可以利用它來(lái)實(shí)現(xiàn)超時(shí)處理。參考代碼如下:

  struct timeval tv; // 描述時(shí)間的結(jié)構(gòu)體變量

  fdset rdfds; // 定義讀描述符集合

  ……

  tv.tv_sec = 8;

  tv.tv_usec = 0;

  FD_ZERO(&rdfds);

  FD_SET(sockfd, &rdfds);

[1]  [2]  

更多資料
更多課程
更多真題
溫馨提示:因考試政策、內(nèi)容不斷變化與調(diào)整,本網(wǎng)站提供的以上信息僅供參考,如有異議,請(qǐng)考生以權(quán)威部門(mén)公布的內(nèi)容為準(zhǔn)!

通信工程師備考資料免費(fèi)領(lǐng)取

去領(lǐng)取

距離2025 通信工程師考試

還有
  • 3
  • 1
  • 1
專注在線職業(yè)教育23年

項(xiàng)目管理

信息系統(tǒng)項(xiàng)目管理師

廠商認(rèn)證

信息系統(tǒng)項(xiàng)目管理師

信息系統(tǒng)項(xiàng)目管理師

學(xué)歷提升

!
咨詢?cè)诰€老師!