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

天下

記錄修行的印記

socket服務端select模式+管道+多線程,select可以替換為epoll

#include "stdafx.h"

using namespace std;


#define PORT 5006   /* Port that will be opened */
#define BACKLOG 5   /* Number of allowed connections */
#define MAXDATASIZE 4096

typedef map
<unsigned int,sockaddr_in> socket_maptable_t;
bool process_client(int sockfd,sockaddr_in addr,char* recvbuf, int len);

socket_maptable_t socket_maptable;
int fds[2];


void* dispatch_thread(void *arg)
{
    
char buf[MAXDATASIZE];
    arg 
= NULL;
    pr_debug(
"fds[0]:%d,fds[1]:%d",fds[0],fds[1]);
    
while (1)
    {
        
int readed = read(fds[0],buf,MAXDATASIZE);
        pr_debug(
"readed:%d\r\n%s",readed,buf);
    }
}

int main()
{
    
int sock_fd;
    ssize_t recv_size;
    fd_set read_set;
    fd_set all_set;
    
int listen_fd;
    
int connect_fd;
    
int ready_size;
    socklen_t addr_size;
    sockaddr_in srv_addr;
    sockaddr_in addr;
    unsigned 
int max_fd = 0;
    
int errcode;
    
    
char recv_buf[MAXDATASIZE];

    
if ((listen_fd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
        pr_debug(
"Creating socket failed.");
        exit(
1);
    }

    
int opt = SO_REUSEADDR;
    setsockopt(listen_fd, SOL_SOCKET, SO_REUSEADDR, 
&opt, sizeof(opt));

    bzero(
&srv_addr,sizeof(srv_addr));
    srv_addr.sin_family
=AF_INET;
    srv_addr.sin_port
=htons(PORT);
    srv_addr.sin_addr.s_addr 
= htonl (INADDR_ANY);
    
if (bind(listen_fd, (struct sockaddr *)&srv_addr, sizeof(struct sockaddr)) == -1
    {
        pr_debug(
"Bind error.");
        exit(
1);
    }

    
if(listen(listen_fd,BACKLOG) == -1
    {
        pr_debug(
"listen() error\n");
        exit(
1);
    }


    
//創建管道
    errcode = pipe(fds);
    
if (errcode < 0)
    {
        pr_debug(
"pipe() error");
        
return -1;
    }
    pr_debug(
"pipe() succeed,fds[0]:%d,fds[1]:%d",fds[0],fds[1]);


    
//創建接收連接線程
    pthread_t dispatch_tid;
    
if (pthread_create(&dispatch_tid, NULL, dispatch_thread, (void*)NULL)) 
    {
        pr_debug(
"pthread_create() dispatch_thread error");
        
return -1;
    }
    pr_debug(
"pthread_create() dispatch_thread succeed");

    max_fd 
= listen_fd;
    addr_size
=sizeof(sockaddr_in);

    FD_ZERO(
&all_set);
    FD_SET(listen_fd, 
&all_set);

    socket_maptable_t::iterator iter;

    
    
while(1)
    {
        read_set 
= all_set;
        ready_size 
= select(max_fd+1&read_set, NULL, NULL, NULL);
        
if ( FD_ISSET(listen_fd,&read_set) ) {
            connect_fd 
= accept(listen_fd,(struct sockaddr *)&addr,&addr_size);
            
if (connect_fd ==-1 ) {
                pr_debug(
"accept() error\n");
                
continue;
            }
            socket_maptable[connect_fd]  
= addr;
            max_fd 
= connect_fd;
            FD_SET(connect_fd, 
&all_set);
            pr_debug(
"(%u) %s:%d connected,socket:%u",socket_maptable.size(),inet_ntoa(addr.sin_addr),ntohs(addr.sin_port),connect_fd);
        }

        
for ( iter = socket_maptable.begin(); iter!=socket_maptable.end(); iter++)
        {
            sock_fd 
= iter->first;
            addr 
= iter->second;
            
if ( FD_ISSET(sock_fd,&read_set) )
            {
                recv_size 
= recv(sock_fd, recv_buf, MAXDATASIZE,0);
                
bool bRet = (recv_size > 0);
                bRet 
= bRet && process_client(sock_fd,addr,recv_buf,recv_size);
                
if ( !bRet) 
                {
                    close(sock_fd);
                    FD_CLR(sock_fd, 
&all_set);
                    socket_maptable.erase(sock_fd);
                    pr_debug(
"%s:%d disconnected\n",inet_ntoa(addr.sin_addr),ntohs(addr.sin_port) );
                }
            }
        }
    }
    close(listen_fd);
}


bool process_client(int sockfd,sockaddr_in addr,char* recvbuf, int len)
{
    
int writed = write(fds[1],recvbuf,len);
    pr_debug(
"datalen:%d,writed:%d",len,writed);
    
return (writed==len);
    
return true;
}

posted on 2014-03-24 10:35 天下 閱讀(1276) 評論(0)  編輯 收藏 引用 所屬分類: Linux編程

<2010年11月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

導航

統計

常用鏈接

留言簿(4)

隨筆分類(378)

隨筆檔案(329)

鏈接

最新隨筆

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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热| 亚洲国产成人午夜在线一区| 亚洲一级片在线观看| 91久久精品一区| 亚洲久久成人| 亚洲一区二区三区成人在线视频精品| 亚洲美女毛片| 亚洲在线视频免费观看| 亚洲欧美日韩国产综合精品二区 | 亚洲欧美成人精品| 久久超碰97中文字幕| 乱中年女人伦av一区二区| 欧美成人国产一区二区| 亚洲毛片在线观看| 亚洲欧美日韩精品久久亚洲区| 韩国一区二区在线观看| 久久久久久久久久久久久久一区| 久久精品国产成人| 欧美激情一区二区三区在线| 国产精品久久久久久久7电影 | 欧美喷潮久久久xxxxx| 国产精品久久久久久久久搜平片| 国产一区二区三区不卡在线观看 | 一区二区精品| 久久精品国产清高在天天线| 欧美国产第一页| 亚洲性夜色噜噜噜7777| 久热精品在线视频| 国产精品美女久久久浪潮软件 | 欧美性事免费在线观看| 在线日韩电影| 午夜老司机精品| 亚洲国产精品激情在线观看| 亚洲一区二区成人| 女女同性精品视频| 国产日韩欧美中文| 中文亚洲视频在线| 欧美国产日本在线| 久久国产88| 欧美午夜一区二区三区免费大片| 在线精品国精品国产尤物884a| 亚洲欧美日韩综合aⅴ视频| 亚洲国产91| 久久精品天堂| 国产欧美不卡| 亚洲免费一在线| 亚洲人成在线播放| 另类欧美日韩国产在线| 国产在线麻豆精品观看| 欧美亚洲一区| 亚洲视频网在线直播| 欧美三级网址| 日韩西西人体444www| 欧美激情a∨在线视频播放| 久久精品中文字幕免费mv| 国产欧美精品在线观看| 亚洲欧美精品suv| 一本综合精品| 欧美日韩视频免费播放| 日韩午夜免费| 亚洲日本va午夜在线电影| 欧美福利视频在线观看| 亚洲国产精品久久久久久女王| 乱码第一页成人| 久久久精品网| 亚洲国产欧洲综合997久久| 美日韩免费视频| 久久久久一区二区| 亚洲电影在线看| 亚洲精品欧美极品| 亚洲黄一区二区| 免费看精品久久片| 久久午夜羞羞影院免费观看| 依依成人综合视频| 欧美夫妇交换俱乐部在线观看| 久久尤物视频| 亚洲人成人一区二区三区| 亚洲国产精品成人精品| 欧美日韩mv| 午夜久久久久久| 欧美一区二区免费| 亚洲国产毛片完整版| 日韩五码在线| 国产亚洲毛片在线| 亚洲大胆人体在线| 国产精品v欧美精品∨日韩| 久久精品91久久久久久再现| 毛片av中文字幕一区二区| 制服丝袜激情欧洲亚洲| 欧美一进一出视频| 亚洲人成亚洲人成在线观看| 中文亚洲视频在线| 黄页网站一区| 99热精品在线| 狠狠色综合一区二区| 亚洲国产欧美日韩| 国产精品一区二区久久| 欧美韩国日本一区| 国产精品永久免费| 亚洲国产日韩欧美在线99| 国产精品久久久久久久久久ktv | 欧美在线三级| 欧美xx69| 久久久www成人免费无遮挡大片| 欧美/亚洲一区| 久久精品1区| 欧美日韩情趣电影| 免费亚洲网站| 国产精品综合av一区二区国产馆| 欧美激情aaaa| 国产丝袜美腿一区二区三区| 亚洲激情中文1区| 狠狠噜噜久久| 亚洲香蕉在线观看| 99精品视频一区二区三区| 久久精品一区二区三区不卡| 亚洲女人av| 欧美体内谢she精2性欧美| 欧美国产综合| 亚洲电影第1页| 欧美在线视频导航| 久久精品视频在线播放| 国产精品一二一区| 一区二区三区四区五区精品| 99视频精品免费观看| 美女视频黄 久久| 农村妇女精品| 亚洲国产一区二区精品专区| 久久一区二区三区超碰国产精品| 久久久亚洲国产天美传媒修理工| 国产欧美精品va在线观看| 亚洲专区免费| 午夜亚洲精品| 亚洲欧美日韩在线观看a三区 | 亚洲激情婷婷| 久久精品日韩一区二区三区| 亚久久调教视频| 国产精品羞羞答答| 亚洲天堂成人| 亚洲综合日韩在线| 国产精品久久久久久久久久免费看| 日韩视频专区| 午夜视频一区二区| 国产一区二区久久精品| 久久精品国产77777蜜臀| 久久综合久色欧美综合狠狠| 一区二区在线视频| 老司机免费视频久久| 欧美激情乱人伦| 夜夜嗨av一区二区三区| 欧美日韩精品免费| 亚洲午夜在线| 久久婷婷综合激情| 亚洲国产婷婷香蕉久久久久久99 | 久久国产一区二区| 女人色偷偷aa久久天堂| 亚洲日本中文| 欧美三区美女| 亚洲欧美另类中文字幕| 久久亚洲电影| 日韩一二三在线视频播| 国产精品欧美日韩一区二区| 欧美影院在线播放| 亚洲国产精品ⅴa在线观看| 亚洲一区观看| 合欧美一区二区三区| 欧美精品www在线观看| 一区二区三区四区蜜桃| 久久综合国产精品| 亚洲一品av免费观看| 国内精品99| 欧美日韩国产欧| 久久都是精品| 一本久久综合亚洲鲁鲁五月天| 久久精品主播| 一区二区三区视频观看| 国产一区二区三区最好精华液| 欧美成人中文| 欧美一区二区黄| av成人免费在线| 欧美成人综合一区| 欧美亚洲免费在线| 亚洲日本中文字幕区| 国产日韩精品一区二区浪潮av| 免费精品99久久国产综合精品| 亚洲一区二区三区在线播放| 欧美国产欧美综合| 久久国产精品99久久久久久老狼| 亚洲欧洲日产国码二区| 国产一区二区三区高清在线观看| 欧美乱妇高清无乱码| 久久久免费av| 香港成人在线视频| 亚洲午夜精品一区二区| 亚洲日本理论电影| 欧美黄色一区| 欧美1区2区3区| 久久精品毛片| 欧美在线播放一区二区| 亚洲一区在线观看视频 |