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

yehao's Blog

套接字Select I/O模型

轉自http://www.cnblogs.com/yunboy4/archive/2009/08/04/1538915.html 

select模型

select(選擇)模型是winsock中常見的I/O模型。之所以稱其為“select模型”,是由于它的
“中心思想”是利用select函數,實現對I/O的管理!最初設計該模型時,主要面向的是某些使用
Unix操作系統的計算機,它們采用的是Berkeley套接字方案。select模型已經集成到Winsock1.1中。

1.通過調用select函數可以確定一個或多個套接字的狀態,判斷套接字上是否有數據,或
者能否向一個套接字寫入數據。 
 
int select (int nfds,                                                   //忽略
                fd_set FAR *readfds,                                //等待可讀性檢查的套接字組的地址
                fd_set FAR *writefds,                               //等待可寫性檢查的套接字組的地址
                fd_set FAR *exceptfds,                              //等待錯誤檢查的套接字組的地址
                const struct timeval FAR *timeout);         //struct timeval結構體地址,select() 最多等待的時間
//返回值       0--超時,SOCKET_ERROR--失敗
//說明:此函數的作用是刪除fd_set結構體中沒有IO操作的套接字
/*
注意:在3個套接字組中至少有一個不為NULL;在非空集合中必須包含一個套接字句柄。
     如果timeout設為(0,0),select() 會立即返回,允許應用程序對select操作進行“輪詢”。
     如:
        fd_set fdread;
        FD_ZERO(&fdread);
        FD_SET(s, &fdread);
        select(0, &fdread, NULL, NULL, NULL);
        if(FD_ISSET(s, &fdread))
        {
                //套接字可讀
        }
*/


2.管理套接字的結構體
定義:
typedef 
struct fd_set {
        u_int   fd_count;               
/* how many are SET? */  //元素的個數
        SOCKET  fd_array[FD_SETSIZE];   /* an array of SOCKETs */
} fd_set;

對struct fd_set結構體操作的宏
FD_SETSIZE              容量,指定fd_array數組大小,默認為64,也可自己修改宏
FD_ZERO(
*set)           置空,使數組的元素值都為3435973836,元素個數為0.
FD_SET(s, 
*set)         添加,向 struct fd_set結構體添加套接字s
FD_ISSET(s, 
*set)       判斷,判斷s是否為 struct fd_set結構體中的一員
FD_CLR(s, 
*set)         刪除,從 struct fd_set結構體中刪除成員s    

3.用Select模型獲取網絡事件

    FD_SET AllSockFd;        
//裝有所有的套接字
    FD_ZERO(&AllSockFd);
    AllSockFd 
= ClientSockFd ;
    FD_SET(ListenSock, 
&AllSockFd);
    FD_SET ReadSockFd;    
//讀集合
    FD_SET WriteSockFd;    //寫集合
    while(1)
    {
        FD_ZERO(
&ReadSockFd);
        FD_ZERO(
&WriteSockFd);
        ReadSockFd 
= AllSockFd;
        WriteSockFd 
= AllSockFd;

        
int nRet = select(0&ReadSockFd, &WriteSockFd, NULL, NULL);    
        
if(SOCKET_ERROR == nRet)
        {
            
continue;
        }
        
//有請求事件發生
        if (FD_ISSET(ListenSock, &ReadSockFd))
        {
            
//接受請求
            SOCKET ClientSock;
            u_short Port;
            
bool nRe = (*(Pam.pListenSock)).Accept(&ClientSock, 0&Port);
            
if(nRe)
            {
                FD_SET(ClientSock, Pam.pClientSockFd);
                
//設置套接字發送緩沖區80K
                int nBuf = SOCKET_BUFF;
                
int nBufLen = sizeof(nBuf);
                
int nRe = setsockopt(ClientSock, SOL_SOCKET, SO_SNDBUF, (char*)&nBuf, nBufLen);
                
if(SOCKET_ERROR == nRe)
                    AfxMessageBox(
"setsockopt error!");    
                
//檢查緩沖區是否設置成功
                nRe = getsockopt(ClientSock, SOL_SOCKET, SO_SNDBUF, (char*)&nBuf, &nBufLen);
                
if(SOCKET_BUFF != nBuf)
                    AfxMessageBox(
"檢查緩沖區:setsockopt error!");
                
else
                    AfxMessageBox(
"已連接客戶端!");
            }
        }
        
//判斷是否可讀或可寫
        for(u_int n = 0;n < ClientSockFd.fd_count;n++)
        {
                
if(FD_ISSET(ClientSockFd.fd_array[n], &ReadSockFd))        //發現可讀
                {        
                        
//接收數據
                        
//如果失敗 刪除此元素        
                }
                
if(FD_ISSET(ClientSockFd.fd_array[n], &WriteSockFd))    //發現可寫  
                {
                        
//發送緩沖區未滿可以發送
                        
//如果失敗 刪除此元素
                }
        }
    }

posted on 2011-05-18 18:16 厚積薄發 閱讀(459) 評論(0)  編輯 收藏 引用 所屬分類: 網絡編程

導航

<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

統計

常用鏈接

留言簿

隨筆分類

文章分類

文章檔案

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美影院久久久| 亚洲一区国产视频| 久久亚洲一区二区三区四区| 国产视频综合在线| 欧美一区二区三区啪啪| 午夜欧美精品久久久久久久| 国产欧美在线播放| 久久久久国产成人精品亚洲午夜| 午夜精品久久久久久久久久久久久 | 久久综合电影| 在线欧美电影| 亚洲黄一区二区三区| 美脚丝袜一区二区三区在线观看 | 在线观看一区二区精品视频| 嫩模写真一区二区三区三州| 老司机成人网| 亚洲图片你懂的| 欧美亚洲一区二区在线| 在线看片欧美| 亚洲看片一区| 国产亚洲a∨片在线观看| 欧美电影免费观看高清| 欧美三级黄美女| 久久综合九色欧美综合狠狠| 欧美精品1区| 欧美在线视频免费观看| 午夜国产精品影院在线观看| 精品电影在线观看| 日韩视频精品在线观看| 国产一区二区三区免费不卡| 欧美激情在线免费观看| 国产精品美女久久久浪潮软件| 麻豆91精品91久久久的内涵| 欧美全黄视频| 免费91麻豆精品国产自产在线观看| 欧美精品在线观看播放| 久久久青草婷婷精品综合日韩| 欧美国产日韩亚洲一区| 久久久人成影片一区二区三区| 欧美日本中文| 免费日韩av| 国产日韩在线视频| 夜夜躁日日躁狠狠久久88av| 亚洲成人资源网| 午夜国产精品视频| 亚洲一区欧美| 欧美日韩国产片| 欧美激情91| 国内伊人久久久久久网站视频| 一区二区三区高清视频在线观看| 亚洲第一精品夜夜躁人人躁| 亚洲欧美另类在线| 亚洲午夜精品久久久久久浪潮| 免费在线国产精品| 美女尤物久久精品| 国产一区二区久久精品| 亚洲欧美偷拍卡通变态| 亚洲在线中文字幕| 欧美日韩精品免费在线观看视频| 欧美激情一区二区三区四区 | 欧美成人免费一级人片100| 久久久精品网| 国产亚洲一区二区三区在线观看| 亚洲私拍自拍| 亚洲欧美亚洲| 国产精品视频最多的网站| 日韩小视频在线观看专区| av不卡在线观看| 欧美日本二区| a4yy欧美一区二区三区| 亚洲一区二区欧美| 欧美日韩成人在线观看| 亚洲精品小视频在线观看| 一道本一区二区| 欧美丝袜一区二区| 亚洲性视频网站| 欧美影院午夜播放| 国产一区二区三区高清在线观看 | 欧美激情在线狂野欧美精品| 亚洲国产精品悠悠久久琪琪| 久久视频在线免费观看| 亚洲福利国产精品| 一区二区日韩免费看| 国产精品www色诱视频| 亚洲一区免费在线观看| 久久久欧美精品| 亚洲免费大片| 国产精品久久二区二区| 午夜性色一区二区三区免费视频| 久久久久.com| 亚洲精品日韩久久| 国产精品九九久久久久久久| 欧美在线关看| 亚洲人成在线播放网站岛国| 亚洲一区中文字幕在线观看| 国产日韩欧美在线播放| 久久一区中文字幕| 日韩一级精品视频在线观看| 久久不见久久见免费视频1| 在线免费观看日韩欧美| 欧美日韩三级电影在线| 久久xxxx| 亚洲伦理中文字幕| 久久只精品国产| 一区二区三区欧美在线| 国模一区二区三区| 欧美日韩成人一区二区三区| 久久国产精品99国产| 亚洲精品一区二区三区四区高清| 欧美在线综合| 亚洲天堂网在线观看| 樱桃国产成人精品视频| 欧美婷婷久久| 欧美1区3d| 欧美一区午夜视频在线观看| 日韩午夜免费| 欧美成人久久| 久久久噜噜噜久噜久久| 亚洲在线成人| aa亚洲婷婷| 亚洲国产精品久久人人爱蜜臀| 国产精品入口| 欧美日韩美女| 免费在线一区二区| 久久精品成人| 欧美亚洲免费| 亚洲一区二区三区成人在线视频精品| 亚洲第一精品在线| 玖玖玖国产精品| 久久爱www久久做| 亚洲欧美久久| 亚洲午夜未删减在线观看| 亚洲精品美女| 亚洲国产精品成人精品| 狠狠色狠狠色综合人人| 国产日韩一区二区三区在线| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ入口 | 亚洲影视在线播放| 在线视频欧美日韩精品| 亚洲精品在线观| 亚洲精品午夜| 亚洲三级性片| 影音先锋国产精品| 136国产福利精品导航网址| 伊人久久成人| 1000精品久久久久久久久| 在线日韩电影| 亚洲人成免费| 亚洲日本中文字幕| 亚洲精品女av网站| 99视频一区二区三区| 一区二区三区视频在线观看| 在线亚洲自拍| 亚洲网站在线| 久久成人综合网| 久久婷婷色综合| 欧美 亚欧 日韩视频在线| 欧美成人一区二区在线| 亚洲第一主播视频| 亚洲精品国偷自产在线99热| 一区二区三区鲁丝不卡| 亚洲欧美日本另类| 久久久久久综合网天天| 欧美成年人网站| 欧美涩涩网站| 国产手机视频一区二区| 1024亚洲| 亚洲午夜久久久| 久久久精品一品道一区| 欧美激情一区二区| 亚洲视频一区二区| 久久精品成人欧美大片古装| 欧美ed2k| 国产毛片一区| 亚洲人成小说网站色在线| 亚洲一区二区不卡免费| 久久国产精品网站| 亚洲国产精品激情在线观看| 一区二区三区www| 久久久久www| 欧美日韩一级大片网址| 国产中文一区二区| 一本色道久久综合亚洲二区三区| 午夜欧美不卡精品aaaaa| 欧美大片va欧美在线播放| 一区二区av在线| 久久久噜噜噜久久久| 欧美性猛片xxxx免费看久爱| 在线成人av.com| 亚洲网站在线观看| 欧美高清视频在线| 午夜视频久久久久久| 欧美日韩不卡在线| 伊人伊人伊人久久| 性欧美大战久久久久久久免费观看| 亚洲国产91精品在线观看| 亚欧美中日韩视频| 国产精品成av人在线视午夜片| 亚洲国产精品成人精品| 久久久久一区|