多路复用 循环服务器模型
2011-08-25 22:45
190 查看
#include "header.h" typedef struct sockaddr SA; #define MAXLINE 1024 int main(void) { int listen_fd,connect_fd; struct sockaddr_in server_addr,client_addr; socklen_t length; char buf[MAXLINE]; fd_set rdfs; if((listen_fd = socket(AF_INET,SOCK_STREAM,0)) == -1) { perror("socket fail"); exit(-1); } memset(&server_addr,0,sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(8000); server_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); if(bind(listen_fd,(SA *)&server_addr,sizeof(server_addr)) == -1) { perror("bind fail"); exit(-1); } if(listen(listen_fd,10) == -1) { perror("listen fail"); exit(-1); } int i; memset(buf,'\0',sizeof(buf)); while(1) { FD_ZERO(&rdfs); //设置监听读写文件的描述符集合,仅在第一次调用select时有效 FD_SET(STDIN_FILENO,&rdfs); FD_SET(listen_fd,&rdfs); printf("select before\n"); if(select(listen_fd+1,&rdfs,NULL,NULL,NULL) < 0) //轮询 { perror("select fail"); exit(-1); } printf("select after\n"); for(i = 0; i <= listen_fd;i++) { if(FD_ISSET(i,&rdfs)) { if(i == STDIN_FILENO) { fgets(buf,sizeof(buf),stdin); printf("receive from stdin %s",buf); } if(i == listen_fd) { length = sizeof(client_addr); if((connect_fd = accept(listen_fd ,(SA *)&client_addr ,&length)) == -1) { perror("accept fail"); } printf("connect from client IP %s" ,inet_ntoa(client_addr.sin_addr)); printf("client port %d\n",ntohs(client_addr.sin_port)); memset(buf,'\0',sizeof(buf)); read(connect_fd,buf,sizeof(buf)); printf("read from client:%s\n",buf); } } } close(connect_fd); } close(listen_fd); }
相关文章推荐
- 服务器编程模型 循环服务器->IO复用循环服务器 并发服务器->高性能并发服务器
- Linux网络编程服务器模型选择之IO复用循环并发服务器
- Linux网络编程服务器模型选择之IO复用循环并发服务器
- 循环服务器,并发服务器模型以及I/O多路转接模型
- Linux网络编程服务器模型选择之循环服务器
- 并发服务器模型:IO复用循环服务器
- Linux网络编程服务器模型选择之循环服务器
- 服务器与客户端的模型之select的多路转接
- 单进程socket的服务器/客户端模型
- Muduo 多线程模型:一个 Sudoku 服务器演变
- 5种服务器网络编程模型讲解
- 几种并发服务器模型的实现:多线程,多进程,select,poll,epoll - rail
- (五十三)高并发服务器——多路IO转接机制Select模型
- Linux系统网络服务器模型
- 常用的多路复用模型总结
- 多进程模型和Slect模型服务器介绍
- Epoll模型服务器实现
- Linux学习(二十四):服务器模型
- js: 从setTimeout说事件循环模型
- Samba 文件服务器用户复杂权限模型设计和实现 v0.1b