• <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 老馬驛站 閱讀(1777) 評論(0)  編輯 收藏 引用 所屬分類: c++
            99精品国产在热久久无毒不卡| 国产亚洲精久久久久久无码AV| 久久亚洲AV无码精品色午夜| 狠狠色丁香婷婷久久综合| 思思久久精品在热线热| 欧美丰满熟妇BBB久久久| 国产99久久久久久免费看 | 丁香五月网久久综合| 狠色狠色狠狠色综合久久| 久久久精品视频免费观看| 人人狠狠综合久久88成人| 蜜臀久久99精品久久久久久| 无遮挡粉嫩小泬久久久久久久| 久久国产成人亚洲精品影院| 久久精品亚洲一区二区三区浴池 | 国产精品久久永久免费| 久久亚洲国产成人影院| 一本大道加勒比久久综合| 国产成人精品综合久久久| 欧美精品丝袜久久久中文字幕| 99精品久久精品一区二区| 久久久无码精品亚洲日韩京东传媒| 99久久免费国产精品| 国产91色综合久久免费| 亚洲欧美伊人久久综合一区二区| 亚洲国产高清精品线久久| 久久久久99精品成人片三人毛片| 久久精品一区二区| 91久久婷婷国产综合精品青草| 色综合久久久久无码专区| 亚洲人AV永久一区二区三区久久| 国产精品VIDEOSSEX久久发布| 久久婷婷综合中文字幕| 香蕉久久夜色精品国产小说| 久久91精品国产91久久户| 久久99精品久久久久久久不卡| 性欧美丰满熟妇XXXX性久久久| 亚洲级αV无码毛片久久精品| 久久夜色精品国产亚洲| 老男人久久青草av高清| 亚洲人成伊人成综合网久久久|