server.c

来自「面向连接的Socket实例: 代码实例中的服务器通过socket连接向客户」· C语言 代码 · 共 70 行

C
70
字号
/***	soekct	server***/#include  <stdio.h>#include  <sys/socket.h>#include  <netinet/in.h>#include	<time.h>#define SERVPORT 20001 /*服务器监听端口号 */ #define BACKLOG 10 /* 最大同时连接请求数 */ main(){	int 	sockfd,client_fd; /*sock_fd:监听socket;client_fd:数据传输socket */	int	sin_size;	struct sockaddr_in my_addr; /* 本机地址信息 */	struct sockaddr_in remote_addr; /* 客户端地址信息 */	time_t	tt;	if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {		perror("socket创建出错!"); 		exit(1);	}	my_addr.sin_family=AF_INET;	my_addr.sin_port=htons(SERVPORT); 	my_addr.sin_addr.s_addr = INADDR_ANY; 	bzero(&(my_addr.sin_zero),8); 	if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1) 	{		perror("bind出错!");		exit(1);	}	if (listen(sockfd, BACKLOG) == -1) {		perror("listen出错!");		exit(1);	}	while(1) 	{		sin_size = sizeof(struct sockaddr_in);		if ((client_fd = accept(sockfd, (struct sockaddr *)&remote_addr,&sin_size)) == -1) 		{			perror("accept出错");			continue;		}		printf("received a connection from %s\n", inet_ntoa(remote_addr.sin_addr));				time( &tt );	printf("SERVER receive at  %s\n", ctime( &tt ));		sleep( 1200 );			time( &tt );	printf("SERVER send at  %s\n", ctime( &tt ));		if (!fork()) 		{ /* 子进程代码段 */			if (send(client_fd, "Hello, you are connected!", 26, 0) == -1)			    	perror("send出错!");			close(client_fd);			exit(0);		}		close(client_fd);	}}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?