色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > 網絡編程之網絡超時檢測

網絡編程之網絡超時檢測 時間:2018-09-29      來源:未知

1、什么是網絡超時檢測

   我們都知道阻塞IO是進程如果有數據到來時,就會繼續執行,如果沒有數據到來時,就會無限制的阻塞下去,直到數據到來,比如:我在等一個人給我匯報一件事情,如果他一直沒有做完,我就要一直等下去,這樣就太浪費時間了,而如果我只給他10分鐘時間,如果他還是沒有完成,我就認為他事情沒有完成,然后繼續做我自己的事情,這就是超時檢測,而不是一直死等,那么如果是用于在網絡通信過程中進行超時檢測的話,就稱為網絡超時檢測

2、網絡超時檢測的必要性

   1)避免進程在沒有數據時無限制的阻塞

   2)當設定的時間到時,進程從原操作返回繼續執行

3、設置網絡超時檢測的方法

   在網絡通信中,要做到超時檢測有三種方法:

   1)設置socket的屬性SO_RCVTIMEO

   2)用select檢測socket是否ready

   3)設置定時器(timer),捕捉SIGALRM信號

   接下來,我們分別去看怎么實現:

   1)設置socket的屬性SO_RCVTIMEO

   使用setsockopt設置socket的屬性為SO_RCVTIMEO,即接收超時

   注意:如果是tcp服務器的話,會有兩個套接字,一個是監聽套接字一個是連接套接字,都可以進行設置

   設置好了以后,定義結構體變量,設置超時時間,如下圖:

    

   2)用select檢測socket是否ready

   int select(int n, fd_set *read_fds, fd_set *write_fds, fd_set *except_fds, struct timeval *timeout);這是select函數的原型,后一個參數,就是用來設置超時的,如果后一個參數為NULL的話,也就是沒有超時檢測,那么select監控的文件描述符都沒有準備好,select就會一直阻塞,直到有準備好的文件描述符,如要需要超時檢測,后一個參數就是要設置的超時時間,一旦超時,此時select就會返回0,表示沒有準備好的文件描述符,代碼可參考下圖:

    

但是要注意:我們在運行的時候發現select只有在第一次調用的時候,會阻塞等待,直                    到超時,而后面”select timeout...”會不斷打印,根本就不會等待,這是因為在第一次調用select函數的時候,就將tv.tv_sec的值改為0了

  3)設置定時器(timer),捕捉SIGALRM信號

   這種方式是想通過信號的方式,中斷正在阻塞的系統調用的執行,也就是,首先在系統調用之前(比如recv函數)設置定時器,當時間到了以后,中斷recv函數,然后再繼續執行recv下面的操作,而不是像之前的如果沒有數據可讀,recv會一直阻塞

  但要注意:在安裝信號的時候,不能使用signal函數,因為signal默認會繼續執行系統調用,也就是說當時間到了以后,又繼續執行recv函數了,還是會繼續阻塞,沒有達到我們想要的效果,所以這個時候我們就要使用比它功能更強大的sigaction了,如下圖:

下圖當沒有數據可讀時的運行結果:

另外注意:上面的代碼中SA_RESTART指的是重新執行被信號中斷的系統調用,如果沒有取反的話,就和signal的處理結果是一樣的了

上一篇:u-boot 中使用內存操作命令操作GPIO

下一篇:vmware虛擬機網絡問題的解決

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5,京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: 99精产国品一二三产 | 亚洲综合色AAA成人无码 | 揉着我的奶从后面进去视频 | 日本在线一区二区三区欧美 | 免费国产黄网站在线观看动图 | 美女18免费| 亚洲欧美日韩在线资源观看 | 无码国产一区二区三区四区公司 | 免费A级毛片免费完整 | 在线蜜桃视频 | 国产精品扒开腿做爽爽爽A片唱戏 | 午夜精品久久久久久久四虎 | 亚洲中文有码字幕青青 | 欧美日韩久久久久久 | JAPAN日本人妻熟老太 | 国产精品嫩草视频 | 久9视频这里只有精品 | ZOOSKVIDEOS性欧美 | www.涩| 日韩一区欧美二区 | 天天爽夜夜爽人人爽QC | 亚洲av色情成人永久网站小说 | 色婷婷亚洲六月婷婷中文字幕 | 久在草在线 | 人妻少妇看a片偷人精品视频 | 色妺妺免费影院 | 好男人资源在线观看视频 | 尤物亚洲国产亚综合在线区 | 日本欧美一区二区三区乱码 | 亚洲国产欧美日韩在线精品一区 | 日本免费福利视频 | 日韩黄在线观看 | 久久无码人妻丰满熟妇区毛片 | 中文字字幕在线中文乱码解决方法 | 国产精品白丝AV网站 | 日韩精品无码人妻免费视频 | 中文字幕av无码无卡免费 | 久久精品国产亚洲AV未满十八 | 色国产精品女五丁香五月五月 | 少妇愉情理伦片丰满丰满午夜 | 久久夜色精品国产欧美乱文字幕无码 |