• <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++
            久久人人爽人人爽人人片AV不| 青青草原综合久久| 最新久久免费视频| 99久久精品免费看国产一区二区三区| 中文字幕精品无码久久久久久3D日动漫| 久久精品国产99久久香蕉| 日韩十八禁一区二区久久| 青青草原精品99久久精品66 | 久久亚洲高清综合| 亚洲国产成人久久一区WWW| 久久精品国产乱子伦| 久久香蕉国产线看观看99| 亚洲午夜久久久| 狠狠色丁香久久婷婷综合五月| 国内精品久久久久久麻豆| 三上悠亚久久精品| 亚洲乱码日产精品a级毛片久久| 久久人人爽人人爽人人片AV不 | 久久精品国产亚洲AV香蕉| 97久久精品人人做人人爽| 亚洲中文字幕无码久久综合网| 很黄很污的网站久久mimi色| 久久精品国产亚洲AV香蕉| 日批日出水久久亚洲精品tv| 热99re久久国超精品首页| 国产成人精品三上悠亚久久| 热综合一本伊人久久精品| 久久99精品综合国产首页| 欧美午夜精品久久久久免费视 | 国产精品久久久久久搜索| 国产色综合久久无码有码| 亚州日韩精品专区久久久| 国产精品无码久久四虎| 99久久婷婷国产综合精品草原| 久久夜色精品国产噜噜亚洲AV| 天堂无码久久综合东京热| 精品久久久久久99人妻| 国内精品久久久久久中文字幕 | 伊人久久综合精品无码AV专区| 香蕉久久AⅤ一区二区三区| 久久精品国产一区二区三区不卡|