• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-167  評論-8  文章-0  trackbacks-0
            在send(),recv()過程中有時由于網絡狀況等原因,收發不能預期進行,而設置收發超時控制:
            在Linux下需要注意的是時間的控制結構是struct timeval而并不是某一整型數,以下是來自于網上一篇文章中的摘錄,它是這樣寫的:
            int nNetTimeout=1000;//1秒,
            //設置發送超時
            setsockopt(socket,SOL_SOCKET,SO_SNDTIMEO,(char *)&nNetTimeout,sizeof(int));
            //設置接收超時
            setsockopt(socket,SOL_SOCKET,SO_RCVTIMEO,(char *)&nNetTimeout,sizeof(int));
            這樣做在Linux環境下是不會產生效果的須如下定義:struct timeval timeout = {3,0}; 
             
            //設置發送超時
            setsockopt(socket,SOL_SOCKET,SO_SNDTIMEO,(char *)&timeout,sizeof(struct timeval));
            //設置接收超時
            setsockopt(socket,SOL_SOCKET,SO_RCVTIMEO,(char *)&timeout,sizeof(struct timeval));
            有兩點注意就是
            1)recv ()的第四個參數需為MSG_WAITALL,在阻塞模式下不等到指定數目的數據不會返回,除非超時時間到。還要注意的是只要設置了接收超時,在沒有MSG_WAITALL時也是有效的。說到底超時就是不讓你的程序老在那兒等,到一定時間進行一次返回而已。
            2)即使等待超時時間值未到,但對方已經關閉了socket, 則此時recv()會立即返回,并收到多少數據返回多少數據。
            posted on 2010-03-31 15:22 老馬驛站 閱讀(1765) 評論(0)  編輯 收藏 引用 所屬分類: c++
            精品国产99久久久久久麻豆| av无码久久久久久不卡网站| 四虎影视久久久免费观看| 亚洲国产高清精品线久久| 国产精品久久久香蕉| 久久久久久亚洲AV无码专区| 99热都是精品久久久久久| 亚洲国产成人久久精品99| 久久91亚洲人成电影网站| 大香伊人久久精品一区二区| 国产亚洲欧美精品久久久| 亚洲伊人久久成综合人影院 | 久久嫩草影院免费看夜色| 中文字幕久久精品无码| 久久99精品国产麻豆不卡| 中文字幕久久波多野结衣av| 久久播电影网| 99久久国产主播综合精品| 天堂久久天堂AV色综合| 久久亚洲精品国产精品婷婷| 国产激情久久久久影院老熟女免费 | 久久99热这里只有精品国产| 久久久久亚洲av综合波多野结衣| 99久久婷婷国产综合精品草原| 久久综合国产乱子伦精品免费| 亚洲一区精品伊人久久伊人| 精品久久久无码中文字幕| 成人国内精品久久久久影院| 人妻无码αv中文字幕久久琪琪布| 久久人人爽人人澡人人高潮AV| 99久久国产综合精品网成人影院| 99久久99久久| 国产精品99精品久久免费| 亚洲精品tv久久久久久久久 | 国内精品久久久久久久影视麻豆| 久久综合九色综合精品| 亚洲国产二区三区久久| 国产福利电影一区二区三区久久老子无码午夜伦不 | 国产精品99久久久久久猫咪| segui久久国产精品| 久久97久久97精品免视看秋霞|