⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 复件 server2.c

📁 linux系统下
💻 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 + -