• <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()過程中有時由于網(wǎng)絡(luò)狀況等原因,收發(fā)不能預(yù)期進行,而設(shè)置收發(fā)超時控制:
            在Linux下需要注意的是時間的控制結(jié)構(gòu)是struct timeval而并不是某一整型數(shù),以下是來自于網(wǎng)上一篇文章中的摘錄,它是這樣寫的:
            int nNetTimeout=1000;//1秒,
            //設(shè)置發(fā)送超時
            setsockopt(socket,SOL_SOCKET,SO_SNDTIMEO,(char *)&nNetTimeout,sizeof(int));
            //設(shè)置接收超時
            setsockopt(socket,SOL_SOCKET,SO_RCVTIMEO,(char *)&nNetTimeout,sizeof(int));
            這樣做在Linux環(huán)境下是不會產(chǎn)生效果的須如下定義:struct timeval timeout = {3,0}; 
             
            //設(shè)置發(fā)送超時
            setsockopt(socket,SOL_SOCKET,SO_SNDTIMEO,(char *)&timeout,sizeof(struct timeval));
            //設(shè)置接收超時
            setsockopt(socket,SOL_SOCKET,SO_RCVTIMEO,(char *)&timeout,sizeof(struct timeval));
            有兩點注意就是
            1)recv ()的第四個參數(shù)需為MSG_WAITALL,在阻塞模式下不等到指定數(shù)目的數(shù)據(jù)不會返回,除非超時時間到。還要注意的是只要設(shè)置了接收超時,在沒有MSG_WAITALL時也是有效的。說到底超時就是不讓你的程序老在那兒等,到一定時間進行一次返回而已。
            2)即使等待超時時間值未到,但對方已經(jīng)關(guān)閉了socket, 則此時recv()會立即返回,并收到多少數(shù)據(jù)返回多少數(shù)據(jù)。
            posted on 2010-03-31 15:22 老馬驛站 閱讀(1787) 評論(0)  編輯 收藏 引用 所屬分類: c++
            久久精品天天中文字幕人妻| 久久99九九国产免费看小说| 青青草原综合久久大伊人精品| 97久久香蕉国产线看观看| 伊人色综合久久天天| 国产精品久久久香蕉| 国产精品伦理久久久久久| 久久人人爽人人爽人人片AV不| 国产欧美久久一区二区| 亚洲伊人久久综合影院| 久久精品一区二区国产| 五月丁香综合激情六月久久 | 久久久国产精品网站| 久久露脸国产精品| 色综合久久久久网| 久久婷婷成人综合色综合| 久久99热这里只频精品6| 久久精品国产黑森林| 久久精品www人人爽人人| 伊人久久大香线蕉综合5g| 久久久久噜噜噜亚洲熟女综合| 久久精品国产99国产精偷 | 久久超碰97人人做人人爱| 中文字幕无码久久久| 久久久久无码中| 草草久久久无码国产专区| 久久国产乱子精品免费女| 亚洲AV无一区二区三区久久 | 青草国产精品久久久久久| 囯产极品美女高潮无套久久久| 久久久精品国产亚洲成人满18免费网站 | 久久99精品久久久久久动态图| 合区精品久久久中文字幕一区| 久久精品国产一区二区| 久久精品中文字幕第23页| 欧美日韩精品久久久久| 久久天天躁狠狠躁夜夜av浪潮 | 香蕉久久永久视频| 精品久久人人爽天天玩人人妻| 亚洲国产精品久久久天堂| 777午夜精品久久av蜜臀|