高并发多路IO之select,poll和epoll模型区别与代码实现
多路IO之select 优点:单进程下支持高并发,可以跨平台 缺点:多次从内核到应用,应用到内核的数组拷贝; 每次内核都会重置填写的数据 最大支持1024客户端,原因在于fd_set定义使用了FD_SETSIZE,大小为1024; 以下是select模型server代码: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/socket.h> #include <sys/wait.h> #include <netinet/in.h> #include <errno.h> #include <fcntl.h> #include <sys/select.h> #include <ctype.h> int main(){ int lfd = socket(AF_INET,SOCK_STREAM,0); struct sockaddr_in serv; bzero(&serv,sizeof(serv)); serv.sin_port = htons(8888); serv.sin_family = AF_INET; serv.sin_addr.s_addr