青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴(yán)以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

IOCP中在WSASend以及WSARecv的時(shí)候出現(xiàn)WSA_IO_PENDING情況的說(shuō)明

轉(zhuǎn)載自:http://www.doserver.net/read.php/2063.htm


應(yīng)該是windows網(wǎng)絡(luò)編程第二版里面提到過(guò)。現(xiàn)在整理一下。
1:在IOCP中投遞WSASend返回WSA_IO_PENDING的時(shí)候,表示異步投遞已經(jīng)成功,但是稍后發(fā)送才會(huì)完成。這其中涉及到了三個(gè)緩沖區(qū)。
網(wǎng)卡緩沖區(qū),TCP/IP層緩沖區(qū),程序緩沖區(qū)。
情況一:調(diào)用WSASend發(fā)送正確的時(shí)候(即立即返回,且沒(méi)有錯(cuò)誤),TCP/IP將數(shù)據(jù)從程序緩沖區(qū)中拷貝到TCP/IP層緩沖區(qū)中,然后不鎖定該程序緩沖區(qū),由上層程序自己處理。TCP/IP層緩沖區(qū)在網(wǎng)絡(luò)合適的時(shí)候,將其數(shù)據(jù)拷貝到網(wǎng)卡緩沖區(qū),進(jìn)行真正的發(fā)送。
情況二:調(diào)用WSASend發(fā)送錯(cuò)誤,但是錯(cuò)誤碼是WSA_IO_PENDING的時(shí)候,表示此時(shí)TCP/IP層緩沖區(qū)已滿,暫時(shí)沒(méi)有剩余的空間將程序緩沖區(qū)的數(shù)據(jù)拷貝出來(lái),這時(shí)系統(tǒng)將鎖定用戶(hù)的程序緩沖區(qū),按照書(shū)上說(shuō)的WSASend指定的緩沖區(qū)將會(huì)被鎖定到系統(tǒng)的非分頁(yè)內(nèi)存中。直到TCP/IP層緩沖區(qū)有空余的地方來(lái)接受拷貝我們的程序緩沖區(qū)數(shù)據(jù)才拷貝走,并將給IOCP一個(gè)完成消息。
情況三:調(diào)用WSASend發(fā)送錯(cuò)誤,但是錯(cuò)誤碼不是WSA_IO_PENDING,此時(shí)應(yīng)該是發(fā)送錯(cuò)誤,應(yīng)該釋放該SOCKET對(duì)應(yīng)的所有資源。

2:在IOCP中投遞WSARecv的時(shí)候,情況相似。
情況一:調(diào)用WSARecv正確,TCP/IP將數(shù)據(jù)從TCP/IP層緩沖區(qū)拷貝到緩沖區(qū),然后由我們的程序自行處理了。清除TCP/IP層緩沖區(qū)數(shù)據(jù)。
情況二:調(diào)用WSARecv錯(cuò)誤,但是返回值是WSA_IO_PENDING,此時(shí)是因?yàn)門(mén)CP/IP層緩沖區(qū)中沒(méi)有數(shù)據(jù)可取,系統(tǒng)將會(huì)鎖定我們投遞的WSARecv的buffer,直到TCP/IP層緩沖區(qū)中有新的數(shù)據(jù)到來(lái)。
情況三:調(diào)用WSARecv錯(cuò)誤,錯(cuò)誤值不是WSA_IO_PENDING,此時(shí)是接收出錯(cuò),應(yīng)該釋放該SOCKET對(duì)應(yīng)的所有資源。

在以上情況中有幾個(gè)非常要注意的事情:
系統(tǒng)鎖定非分頁(yè)內(nèi)存的時(shí)候,最小的鎖定大小是4K(當(dāng)然,這個(gè)取決于您系統(tǒng)的設(shè)置,也可以設(shè)置小一些,在注冊(cè)表里面可以改,當(dāng)然我想這些數(shù)值微軟應(yīng)該比我們更知道什么合適了),所以當(dāng)我們投遞了很多WSARecv或者WSASend的時(shí)候,不管我們投遞的Buffer有多大(0除外),系統(tǒng)在出現(xiàn)IO_PENGDING的時(shí)候,都會(huì)鎖定我們4K的內(nèi)存。這也就是經(jīng)常有開(kāi)發(fā)者出現(xiàn)WSANOBUF的情況原因了。

我們?cè)诮鉀Q這個(gè)問(wèn)題的時(shí)候,要針對(duì)WSASend和WSARecv做處理
1:投遞WSARecv的時(shí)候,可以采用一個(gè)巧妙的設(shè)計(jì),先投遞0大小Buf的WSARecv,如果返回,表示有數(shù)據(jù)可以接收,我們開(kāi)啟真正的recv將數(shù)據(jù)從TCP/IP層緩沖區(qū)取出來(lái),直到WSA_IO_PENGDING.
2:對(duì)投遞的WSARecv以及WSASend進(jìn)行計(jì)數(shù)統(tǒng)計(jì),如果超過(guò)了我們預(yù)定義的值,就不進(jìn)行WSASend或者WSARecv投遞了。
3:現(xiàn)在我們應(yīng)該就可以明白為什么WSASend會(huì)返回小于我們投遞的buffer空間數(shù)據(jù)值了,是因?yàn)門(mén)CP/IP層緩沖區(qū)小于我們要發(fā)送的緩沖區(qū),TCP/IP只會(huì)拷貝他剩余可被Copy的緩沖區(qū)大小的數(shù)據(jù)走,然后給我們的WSASend的已發(fā)送緩沖區(qū)設(shè)置為移走的大小,下一次投遞的時(shí)候,如果TCP/IP層還未被發(fā)送,將返回WSA_IO_PENGDING。
4:在很多地方有提到,可以關(guān)閉TCP/IP層緩沖區(qū),可以提高一些效率和性能,這個(gè)從上面的分析來(lái)看,有這個(gè)可能,要實(shí)際的網(wǎng)絡(luò)情況去實(shí)際分析了。

                                                                               -EOF-

posted on 2011-01-13 02:48 楊粼波 閱讀(1105) 評(píng)論(0)  編輯 收藏 引用


只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美亚洲免费| 国产精品mv在线观看| 亚洲精品国产精品久久清纯直播| 久久久久国产精品午夜一区| 欧美在线亚洲一区| 欧美日韩中文字幕| 一本大道av伊人久久综合| 亚洲人成亚洲人成在线观看| 亚洲人成在线观看| 亚洲愉拍自拍另类高清精品| 欧美亚洲午夜视频在线观看| 久久噜噜噜精品国产亚洲综合| 欧美a一区二区| 欧美日韩国产首页| 国产婷婷色一区二区三区四区| 黄页网站一区| 亚洲精品欧美一区二区三区| 亚洲淫性视频| 免费在线观看日韩欧美| 女仆av观看一区| 99视频有精品| 久久人体大胆视频| 欧美精品乱码久久久久久按摩| 国产精品久久久久久久久久三级 | 欧美人交a欧美精品| 国产精品自拍一区| 亚洲精品中文字幕在线| 香蕉久久精品日日躁夜夜躁| 蜜臀av一级做a爰片久久| 一区二区三区精密机械公司| 久久综合色综合88| 国产欧美婷婷中文| 亚洲视频一区二区免费在线观看| 久久综合伊人77777| 在线一区二区视频| 欧美福利一区| 国产精品私房写真福利视频 | 国产精品无码永久免费888| 久久久久9999亚洲精品| 欧美成人午夜剧场免费观看| 欧美性色综合| 一色屋精品视频在线看| 在线视频免费在线观看一区二区| 欧美在线999| 亚洲国产精品999| 一本一道久久综合狠狠老精东影业 | 久久综合九色综合久99| 国产日本欧美在线观看| 亚洲欧美成人| 一二三区精品福利视频| 91久久精品国产91久久| 亚洲乱码国产乱码精品精| 久久美女艺术照精彩视频福利播放| 一区二区精品在线| 欧美日韩亚洲一区二| 日韩视频在线观看一区二区| 欧美成人高清视频| 久久一区二区精品| 在线观看91精品国产麻豆| 久久久综合免费视频| 久久9热精品视频| 欧美日韩国产综合视频在线观看中文 | 国产精品永久免费| 午夜一级在线看亚洲| 亚洲图片自拍偷拍| 欧美性猛交99久久久久99按摩| 亚洲视频一二| 亚洲午夜精品一区二区| 国产精品一区二区三区四区五区| 亚洲欧美一区二区三区久久| 亚洲一区二区视频| 国产午夜亚洲精品不卡| 久久久久久成人| 久久久综合精品| 亚洲欧洲日产国码二区| 日韩一级精品| 国产日韩1区| 欧美xxxx在线观看| 欧美va天堂va视频va在线| 一本色道久久88亚洲综合88| 亚洲一二三级电影| 影音先锋一区| 亚洲免费av片| 国内激情久久| 最近中文字幕日韩精品 | 一区二区高清在线观看| 这里是久久伊人| 黄色亚洲网站| 亚洲毛片在线免费观看| 国产日韩欧美在线播放不卡| 欧美mv日韩mv国产网站| 欧美日韩精品一区二区在线播放| 亚洲一区在线直播| 久久午夜电影网| 亚洲自拍偷拍色片视频| 久久天堂精品| 亚洲欧美日韩国产另类专区| 久久久久欧美精品| 亚洲专区一区| 美女尤物久久精品| 99热这里只有成人精品国产| 欧美视频一区二区三区在线观看 | 美国成人直播| 国产精品xxxav免费视频| 麻豆精品传媒视频| 欧美午夜剧场| 亚洲国产mv| 国产亚洲精品久久久久久| 亚洲日本欧美在线| 一区免费观看视频| 亚洲综合国产激情另类一区| 亚洲精品无人区| 久久免费高清视频| 久久不射2019中文字幕| 欧美日韩视频一区二区三区| 欧美gay视频| 国产一区日韩二区欧美三区| 在线视频欧美日韩精品| 日韩天堂在线视频| 久热精品视频在线免费观看| 欧美资源在线| 国产精品一区视频| 宅男噜噜噜66国产日韩在线观看| 亚洲开发第一视频在线播放| 久久婷婷人人澡人人喊人人爽| 久久久99免费视频| 国产日产高清欧美一区二区三区| 亚洲一区二区视频在线| 午夜精品av| 国产精品久久久久影院色老大 | 欧美在线精品一区| 欧美在线三级| 国产三级欧美三级| 午夜精品理论片| 亚洲欧美日韩成人高清在线一区| 欧美日韩精品欧美日韩精品一| 亚洲高清一区二区三区| 亚洲激情影视| 欧美高清一区二区| 亚洲激情婷婷| 一区二区三区欧美亚洲| 欧美日韩亚洲视频| 亚洲桃色在线一区| 欧美专区亚洲专区| 国内成+人亚洲+欧美+综合在线| 久久国产直播| 欧美激情视频网站| 一本久道久久久| 国产精品国产三级国产专区53 | 亚洲永久免费精品| 国产精品老女人精品视频| 亚洲天堂av在线免费观看| 亚洲综合国产| 狠狠色噜噜狠狠狠狠色吗综合| 久久久中精品2020中文| 欧美国产欧美亚洲国产日韩mv天天看完整 | 欧美亚洲视频| 国产在线成人| 男女av一区三区二区色多| 亚洲国产精品一区二区三区| 一本色道婷婷久久欧美| 国产精品五区| 久久久免费精品| 亚洲精品美女在线| 亚洲欧美日韩在线不卡| 国产亚洲福利| 欧美成人嫩草网站| 亚洲一二三区在线| 欧美成人亚洲成人日韩成人| 夜色激情一区二区| 国产乱码精品1区2区3区| 久久久久久久精| 日韩视频免费| 另类亚洲自拍| 亚洲一区二区三区国产| 国内精品久久久| 欧美日韩国产不卡| 久久精品99国产精品日本| 国产一区二区三区在线观看网站| 久久久久在线观看| 宅男噜噜噜66一区二区66| 老司机一区二区三区| 亚洲一本视频| 亚洲日本理论电影| 亚洲影院在线| 亚洲日本中文| 老司机免费视频久久| 亚洲欧美中文字幕| 亚洲精品你懂的| 精品999在线播放| 国产精品久久久久免费a∨| 欧美激情视频在线播放 | 国产深夜精品| 国产精品高潮呻吟久久| 快射av在线播放一区| 欧美一区二区视频免费观看| 一区二区精品在线| 亚洲精品在线视频观看| 免费欧美在线视频| 久久人人爽国产|