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

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 厚積薄發 閱讀(458) 評論(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>
            一本色道久久综合一区| 亚洲大胆女人| 国产精品一区二区你懂的| 欧美精品在线免费| 欧美激情一区三区| 欧美午夜女人视频在线| 国产日韩精品一区二区三区| 国产一区二区三区在线免费观看 | 一本色道久久综合亚洲精品婷婷 | 欧美另类亚洲| 欧美三级黄美女| 国产精品毛片| 国产亚洲综合精品| 亚洲人体一区| 午夜日本精品| 蜜桃久久精品乱码一区二区| 亚洲欧洲另类| 午夜久久美女| 欧美成人高清视频| 国产乱码精品一区二区三区av | 香蕉乱码成人久久天堂爱免费 | 亚洲欧美资源在线| 免费成人美女女| 亚洲最新在线| 久久琪琪电影院| 欧美日韩国产亚洲一区| 国产日产欧产精品推荐色 | 亚洲国产视频一区| 亚洲欧美日韩在线观看a三区| 裸体素人女欧美日韩| 国产精品中文字幕在线观看| 亚洲精品婷婷| 免费的成人av| 亚洲综合日韩| 欧美日本一区二区高清播放视频| 国产亚洲精品久久久| 一区二区三区免费网站| 欧美国产日韩一区二区| 欧美在线视频观看| 国产精品一区久久久| 99精品国产高清一区二区| 欧美一区二区三区在| 亚洲乱码国产乱码精品精 | 亚洲网站在线| 欧美日本一区| 99国产精品自拍| 亚洲经典在线| 久久视频一区| 一区二区免费在线播放| 乱码第一页成人| 欧美一区二区三区视频免费播放| 国产精品久久久久aaaa九色| 一区二区三区久久久| 亚洲高清久久网| 久久免费黄色| 国产日产欧美a一级在线| 亚洲淫性视频| 一区二区三区欧美视频| 国产精品成人观看视频国产奇米| 亚洲尤物精选| 亚洲调教视频在线观看| 欧美性视频网站| 亚洲免费影视第一页| 亚洲性感激情| 国产视频一区在线观看| 久久久最新网址| 久久久青草婷婷精品综合日韩 | 午夜精品av| 国产精品欧美久久久久无广告| 亚洲在线视频一区| 午夜精品久久久久久久99水蜜桃| 国产欧美精品xxxx另类| 久久国产精品久久w女人spa| 久久精品99无色码中文字幕| 狠久久av成人天堂| 久久久噜噜噜久久人人看| 久久国产精品99精品国产| 亚洲国产精品一区二区第一页| 亚洲国产成人在线视频| 欧美日韩精品高清| 欧美中文字幕精品| 久久亚洲精品一区| 一级成人国产| 欧美一级大片在线免费观看| 亚洲电影免费在线观看| 亚洲裸体俱乐部裸体舞表演av| 国产精品美女主播| 免费观看久久久4p| 欧美日韩另类一区| 久久青青草综合| 欧美日韩一二三区| 久久久久久久久久久一区 | 亚洲精品国产品国语在线app | 亚洲一区3d动漫同人无遮挡| 国产欧美视频一区二区| 免费成人黄色| 国产精品美女主播在线观看纯欲| 美日韩在线观看| 欧美性生交xxxxx久久久| 久久综合给合| 国产精品国色综合久久| 欧美高清视频在线观看| 久久免费国产精品| 欧美精品网站| 久久精品免费观看| 欧美人体xx| 欧美 日韩 国产一区二区在线视频 | 亚洲天堂网在线观看| 午夜国产精品视频免费体验区| 亚洲精品一区二区三区福利| 久久国产日本精品| 午夜精品福利电影| 欧美激情一区二区三区蜜桃视频 | 99这里只有精品| 亚洲国产综合视频在线观看| 欧美亚洲综合久久| 性欧美办公室18xxxxhd| 欧美日韩喷水| 日韩视频免费大全中文字幕| 亚洲精品视频在线观看网站| 免费成人黄色片| 欧美.com| 亚洲第一综合天堂另类专| 欧美主播一区二区三区| 久久国产精品久久国产精品| 国产精品www.| 日韩亚洲欧美中文三级| 一本高清dvd不卡在线观看| 你懂的国产精品| 亚洲国产欧洲综合997久久| 亚洲国产91色在线| 久久夜色精品国产噜噜av| 老司机午夜精品| 国产欧美日韩中文字幕在线| 亚洲女人小视频在线观看| 亚洲欧美韩国| 国产欧美日韩一区| 性色av香蕉一区二区| 久久成人精品| 精品999网站| 久久尤物视频| 亚洲国产婷婷综合在线精品| 亚洲精品综合精品自拍| 欧美日本三级| 亚洲一区二区三区在线播放| 欧美一级黄色网| 国产在线麻豆精品观看| 久久永久免费| 日韩视频在线观看国产| 欧美亚洲免费电影| 极品中文字幕一区| 欧美高清hd18日本| 亚洲精品一区二区三区99| 一区二区三区四区国产精品| 欧美日韩在线观看一区二区三区| 亚洲图片自拍偷拍| 久久亚洲欧美| 一区二区三区国产在线| 国产伦精品一区二区三区四区免费 | 久久精品国产欧美亚洲人人爽| 美国成人直播| 一区二区三区鲁丝不卡| 国产女人精品视频| 免费人成精品欧美精品| 亚洲精品日韩在线观看| 欧美人交a欧美精品| 久久精品视频一| 亚洲娇小video精品| 欧美日韩国产在线观看| 亚洲欧美制服中文字幕| 91久久一区二区| 亚洲欧美激情一区二区| 精品电影在线观看| 欧美日韩在线观看视频| 久久亚洲精品中文字幕冲田杏梨| 日韩一级网站| 欧美粗暴jizz性欧美20| 午夜伦理片一区| 亚洲免费成人av电影| 国产一区久久| 国产精品卡一卡二| 欧美激情精品久久久久久蜜臀| 先锋亚洲精品| 9i看片成人免费高清| 亚洲第一中文字幕| 久久九九国产| 午夜在线观看欧美| 亚洲伦理在线| 国内精品久久国产| 国产精品xnxxcom| 欧美韩国日本一区| 久久免费视频一区| 欧美一区二区三区视频免费| 亚洲一区二区三区在线观看视频| 亚洲国产婷婷| 欧美激情1区2区3区| 久久漫画官网| 久久久久久久91| 久久国产天堂福利天堂| 欧美一级电影久久|