📄 复件 (3) server2.c
字号:
#include <sys/types.h>#include <sys/socket.h>#include <stdio.h>#include <netinet/in.h>#include <unistd.h>#include <sys/ioctl.h>#include <sys/time.h>//////////////////////////////////////////////////////////////int main(){int server_sockfd, client_sockfd;int server_len, client_len;int fd_max=0;struct sockaddr_in server_address;struct sockaddr_in client_address;int result;fd_set readfds, testfds;server_sockfd = socket(AF_INET, SOCK_STREAM, 0);if (server_sockfd > fd_max) fd_max = server_sockfd+1;//printf("fd_max is %d",fd_max);server_address.sin_family = AF_INET;server_address.sin_addr.s_addr =htonl(INADDR_ANY); server_address.sin_port = htons(9734);server_len = sizeof (server_address);bind(server_sockfd, (struct sockaddr *)&server_address, server_len);listen(server_sockfd,5);FD_ZERO(&readfds);FD_SET(server_sockfd, &readfds);while(1){ char ch; int fd; int nread; testfds = readfds; printf("server waiting\n");printf("start select!\n"); result = select(fd_max, &testfds, (fd_set *)0, (fd_set* )0, (struct timeval*) 0);printf("select end!\n"); if (result<1) { perror("server2"); exit(1); }//printf("FD_SETSIZE is %d\n",FD_SETSIZE); for (fd=0;fd<=fd_max;fd++) {printf(" %d ",fd); if(FD_ISSET(fd,&testfds)) { if(fd == server_sockfd) {printf("fd == server_sockfd,fd is %d)\n",fd); client_len = sizeof(client_address);//printf("start accept!\n"); client_sockfd = accept(server_sockfd, (struct sockaddr*)&client_address, &client_len); if(fd_max<=client_sockfd) fd_max = client_sockfd+1;//printf("end of accept!\n"); FD_SET(client_sockfd, &readfds); printf("adding client on fd %d\n",client_sockfd); } else {printf("this is client socket\n"); ioctl(fd,FIONREAD,&nread); if (nread == 0) {printf(" (nread ==0)"); close(fd); FD_CLR(fd,&readfds); printf("removing client on fd %d\n",fd); } else {printf("start read and sleep! fd is %d\n",fd); read(fd, &ch, 1); sleep(5);printf("end of read and sleep\n"); printf("serving client on fd %d\n",fd); ch++; write(fd, &ch, 1); } } }//if }//for}}//end of file
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -