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

📄 server.c

📁 面向连接的Socket实例: 代码实例中的服务器通过socket连接向客户端发送字符串"Hello, you are connected!"。只要在服务 器上运行该服务器软件
💻 C
字号:
/***	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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -