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

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 厚積薄發 閱讀(452) 評論(0)  編輯 收藏 引用 所屬分類: 網絡編程

導航

<2025年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

統計

常用鏈接

留言簿

隨筆分類

文章分類

文章檔案

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲图中文字幕| 裸体丰满少妇做受久久99精品| 国产精品久久7| 欧美日韩精品不卡| 欧美丝袜一区二区三区| 国产精品高潮粉嫩av| 国产精品伦理| 国产午夜精品福利| 狠狠色狠狠色综合人人| 激情亚洲一区二区三区四区| 1000部国产精品成人观看| 亚洲人成在线观看一区二区| 一本色道婷婷久久欧美| 午夜亚洲福利在线老司机| 久久久av网站| 最新国产精品拍自在线播放| 亚洲国产精品一区二区www在线| 亚洲免费观看视频| 久久精品官网| 欧美精品一区二区三区在线看午夜| 国产精品福利在线观看| 国产亚洲成av人在线观看导航| 国产日韩精品久久| 亚洲欧洲日产国产综合网| 亚洲免费观看视频| 午夜欧美精品| 亚洲精品国产精品国自产在线| 亚洲一区二区三区精品动漫| 久久久亚洲精品一区二区三区| 欧美激情第二页| 国产香蕉97碰碰久久人人| 91久久精品美女高潮| 欧美亚洲尤物久久| 亚洲精品视频免费| 久久av红桃一区二区小说| 欧美精品久久99久久在免费线| 国产人久久人人人人爽| 亚洲视频国产视频| 亚洲国产天堂久久综合网| 欧美主播一区二区三区美女 久久精品人| 免费亚洲一区二区| 黑人操亚洲美女惩罚| 亚洲综合欧美日韩| 亚洲精品中文字| 欧美成人精品在线观看| 狠狠色丁香久久综合频道| 亚洲一区免费网站| 91久久嫩草影院一区二区| 久久精品中文| 韩日欧美一区二区三区| 欧美资源在线| 午夜欧美精品| 国产视频精品网| 欧美一区视频在线| 亚洲综合二区| 国产视频精品网| 久久久久综合一区二区三区| 欧美国产日韩亚洲一区| 亚洲国产天堂久久综合| 久久精品最新地址| 亚洲欧美日韩在线不卡| 国产精品视频九色porn| 亚洲永久在线观看| 亚洲深夜激情| 国产精品推荐精品| 欧美在线不卡| 欧美一区在线直播| 国产在线日韩| 美女日韩在线中文字幕| 久久精品视频在线| 在线成人欧美| 欧美韩国日本一区| 欧美精品一二三| 亚洲视频福利| 亚洲欧洲av一区二区| 国产综合久久久久久| 卡一卡二国产精品| 免费成人高清在线视频| 亚洲精一区二区三区| 亚洲伦理久久| 国产日韩精品入口| 猛男gaygay欧美视频| 欧美成人免费播放| 亚洲欧美日韩爽爽影院| 久久成人精品无人区| 亚洲激情视频在线观看| 9久re热视频在线精品| 国产欧美一区二区精品性 | 欧美日韩三级电影在线| 亚洲永久在线观看| 久久国产日韩| 9l国产精品久久久久麻豆| 亚洲一区精品视频| 亚洲国产成人久久综合一区| 亚洲高清视频一区| 国产精品久久综合| 欧美丰满高潮xxxx喷水动漫| 欧美视频在线免费| 免费美女久久99| 欧美色欧美亚洲另类二区| 久久久欧美精品sm网站| 欧美激情国产日韩精品一区18| 亚洲一区二区三区中文字幕在线| 欧美中文字幕久久| 中文一区二区| 久久国产日本精品| 亚洲欧美日韩国产精品| 麻豆精品传媒视频| 欧美在线看片| 欧美性大战xxxxx久久久| 麻豆精品精品国产自在97香蕉| 欧美日韩三级| 亚洲欧洲久久| 亚洲电影av| 欧美一区二区三区另类| 亚洲视频精选| 欧美另类高清视频在线| 六月天综合网| 韩国三级电影一区二区| 午夜精品视频在线观看| 一本大道久久精品懂色aⅴ| 亚洲成人中文| 欧美一进一出视频| 午夜一区二区三区在线观看 | 一本久久a久久精品亚洲| 1024亚洲| 久久视频一区二区| 久久精品中文字幕免费mv| 国产精品扒开腿爽爽爽视频 | 亚洲精品中文字| 亚洲美女精品一区| 久久综合影音| 欧美xxx成人| 亚洲成色精品| 卡通动漫国产精品| 欧美成人精品在线播放| 影音先锋另类| 鲁鲁狠狠狠7777一区二区| 欧美二区乱c少妇| 91久久线看在观草草青青| 欧美不卡在线视频| 亚洲激情电影中文字幕| 91久久久久久| 欧美精品一区二区三区一线天视频| 欧美激情中文字幕在线| 亚洲蜜桃精久久久久久久| 欧美日本簧片| 亚洲一区二区三| 久久久夜夜夜| 亚洲国产综合91精品麻豆| 欧美福利在线| 一本综合久久| 久久精品欧洲| 亚洲黄色在线视频| 欧美视频精品在线观看| 亚洲欧美日韩直播| 美女主播精品视频一二三四| 亚洲国产一区在线| 欧美午夜理伦三级在线观看| 亚洲欧美韩国| 欧美成年人网站| 亚洲婷婷综合色高清在线| 国产女人水真多18毛片18精品视频| 性色av一区二区三区在线观看| 免费黄网站欧美| 亚洲少妇一区| 在线播放豆国产99亚洲| 欧美日韩国产一中文字不卡| 亚洲欧美国产视频| 亚洲国产婷婷| 久久久www免费人成黑人精品| 亚洲激情在线| 国产精品一页| 欧美韩日一区二区| 香蕉成人久久| 蜜桃av一区| 亚洲欧美怡红院| 亚洲人成7777| 国产一区二区三区久久精品| 欧美v日韩v国产v| 午夜视频精品| 99精品视频免费| 欧美高清hd18日本| 久久精品国产久精国产思思| 日韩视频国产视频| 国产综合色精品一区二区三区| 欧美日韩国产高清视频| 亚洲肉体裸体xxxx137| 国产亚洲综合精品| 欧美日韩国产一区精品一区| 久久精品一区二区三区中文字幕 | 亚洲欧洲一区二区在线播放| 国产精品三区www17con| 欧美粗暴jizz性欧美20| 久久精品一区二区三区不卡牛牛| 一区二区三区四区五区精品视频 | 一本高清dvd不卡在线观看| 狠狠干综合网| 国产女主播一区二区| 国产精品盗摄久久久|