标签:
一、打开网络通讯端口,选用TCP协议
listenfd = socket(AF_INET,SOCK_STREAM,0);
二、初始化servaddr,并且进行网络字节序转换
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(SERV_PORT);
三、绑定IP和端口
bind(listenfd,(struct sockaddr *)&servaddr,sizeof(servaddr));
四、监听链接数目设置
listen(listenfd,20);
五、初始化client[i],用来记录accept返回的文件描述符
for(i = 0; i < FD_SETSIZE; i++)
client[i] = –1;
六、构造select监控文件描述符集
FD_ZERO(&allset);
FD_SET(listenfd,&allset);
七、循环阻塞监听文件描述符
while(1) {
1.每次循环时都从新设置select监控信号集,通过select返回得到就绪的文件描述符个数
rset = allset;
nready = select(maxfd+1,&rset,NULL,NULL,NULL);
2.判断文件描述符里listenfd是否置1,如果是,处理新链接请求
if(FD_ISSET(listenfd,&rset)) {
}
3.如果不是,检测哪个clients有数据就绪
for(i = 0; i <= maxi; i++) {
}
}
标签:
原文地址:http://www.cnblogs.com/beeffat/p/4623332.html