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

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>
            亚洲国产精品久久久久婷婷老年 | 亚洲大胆女人| 国产精品视频999| 欧美高清在线精品一区| 国产麻豆精品久久一二三| 亚洲精品之草原avav久久| 一区二区三区在线观看视频| 亚洲欧美日韩天堂一区二区| 一区二区三区高清在线| 欧美gay视频| 美日韩精品免费| 国产一区二区三区久久精品| 亚洲一区日韩在线| 亚洲在线视频| 欧美视频一区二区在线观看 | 另类图片国产| 国产日韩一区二区三区在线| 亚洲午夜视频在线观看| 亚洲天堂av在线免费| 欧美精品七区| 亚洲欧洲日韩在线| 夜色激情一区二区| 欧美精品麻豆| 亚洲免费av电影| 国产精品99久久久久久久久| 欧美日韩一区免费| 99视频在线精品国自产拍免费观看| 日韩午夜黄色| 欧美日韩国产123| 日韩午夜电影在线观看| 亚洲一区二区在| 国产精品伦理| 欧美伊人久久久久久久久影院| 久久精品国产久精国产爱| 国产亚洲一区二区精品| 久久精品国产欧美激情| 欧美成人精品h版在线观看| 亚洲电影免费观看高清完整版在线观看 | 久久9热精品视频| 狠狠色2019综合网| 免费亚洲一区二区| 亚洲毛片视频| 欧美一级电影久久| 黄色小说综合网站| 欧美va天堂在线| 日韩亚洲欧美综合| 久久国产精品久久国产精品| 黄色日韩网站视频| 欧美激情一区二区在线| 亚洲视频精选| 久久阴道视频| 99亚洲精品| 国产酒店精品激情| 毛片av中文字幕一区二区| 亚洲美女性视频| 久久久久在线| 99精品欧美一区二区三区 | 欧美日韩亚洲天堂| 亚洲欧美日韩精品久久| 欧美高清免费| 亚洲主播在线| 亚洲国产精品久久久久| 欧美性淫爽ww久久久久无| 久久精品国产精品| 亚洲精品你懂的| 久久久久久精| 中文国产一区| 影音先锋久久资源网| 欧美视频一区二区三区四区| 欧美在线你懂的| 99国产精品99久久久久久粉嫩 | 欧美激情视频一区二区三区在线播放| 亚洲一区二区精品在线观看| 在线观看成人一级片| 国产精品久久久久久久久免费桃花 | 久久综合九色99| 亚洲网站在线观看| 伊人精品成人久久综合软件| 国产精品成人免费视频 | 亚洲影视九九影院在线观看| 亚洲国产精品va在线看黑人| 国产欧美日韩综合| 欧美日韩免费高清一区色橹橹| 久久久久久自在自线| 亚洲你懂的在线视频| 亚洲人成在线观看网站高清| 毛片av中文字幕一区二区| 香蕉成人久久| 亚洲午夜电影| 日韩午夜在线播放| 亚洲国产欧美不卡在线观看 | 亚洲第一精品在线| 国产亚洲在线观看| 国产精品网站一区| 国产精品yjizz| 欧美久久一级| 欧美精品一区二区三区在线播放 | 国产精品亚洲综合| 国产精品va在线播放| 欧美日韩三级视频| 欧美精品久久99久久在免费线| 老鸭窝毛片一区二区三区| 欧美专区在线| 久久国产日本精品| 久久国产高清| 久久久蜜桃精品| 久久三级视频| 久久夜色精品| 免费在线观看精品| 欧美大片在线看| 欧美高清成人| 欧美日韩三区| 欧美午夜激情在线| 国产精品普通话对白| 国产精品视频不卡| 国产女人水真多18毛片18精品视频| 国产精品久久久久久久久久久久久 | 欧美日本中文| 欧美日韩综合| 国产精品欧美日韩一区二区| 国产精品一二一区| 国产婷婷成人久久av免费高清 | 欧美成人伊人久久综合网| 免费在线视频一区| 欧美激情片在线观看| 亚洲国产一区二区在线| 日韩小视频在线观看| 亚洲在线观看视频| 久久精品视频在线播放| 美女国产一区| 欧美亚洲不卡| 国内久久婷婷综合| 亚洲日本va午夜在线影院| 一本色道久久| 欧美在线综合视频| 欧美电影在线观看完整版| 亚洲精品在线二区| 午夜久久电影网| 美女性感视频久久久| 欧美视频官网| 国语自产精品视频在线看抢先版结局 | 欧美成人官网二区| 亚洲精品一区二区三区樱花| 亚洲香蕉成视频在线观看 | 国产精品久久91| 黄色国产精品| 夜夜嗨av一区二区三区四区| 欧美一区二区三区在线观看视频| 久久伊人亚洲| 这里只有精品电影| 久久综合伊人77777麻豆| 国产精品成人免费精品自在线观看| 国产亚洲精品久久久久婷婷瑜伽| 亚洲人线精品午夜| 欧美中文字幕| 亚洲精品一区中文| 久久理论片午夜琪琪电影网| 欧美午夜精品理论片a级大开眼界| 国产欧美日韩高清| 亚洲精品日产精品乱码不卡| 久久精品日韩欧美| 99国产精品久久久久久久成人热| 久久精品人人做人人爽电影蜜月| 欧美啪啪一区| 亚洲第一搞黄网站| 欧美主播一区二区三区| 亚洲另类视频| 麻豆精品视频| 精品二区视频| 久久黄色网页| 一区二区三区视频在线观看| 欧美岛国在线观看| 一区二区三区我不卡| 久久国产精品色婷婷| 一本综合久久| 欧美日韩视频在线| 亚洲黄色成人| 欧美va亚洲va香蕉在线| 欧美一级视频| 国产欧美日本一区视频| 亚洲欧美激情视频| 一区二区精品在线| 欧美日韩亚洲一区二区三区| 日韩一级精品| 亚洲人屁股眼子交8| 欧美不卡高清| 亚洲国产精品欧美一二99| 久久亚洲欧美国产精品乐播| 欧美亚洲日本国产| 国产日韩欧美精品在线| 欧美一区免费视频| 亚洲欧美日本精品| 国产女优一区| 久久精品国产精品亚洲综合| 性欧美长视频| 一区二区视频免费完整版观看| 老司机午夜免费精品视频| 久久久av网站| 最新高清无码专区| 亚洲日本欧美|