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

📄 tchtcpserd.c

📁 通信程序
💻 C
字号:
#include <stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> #include <sys/types.h> #include <netinet/in.h> #include <sys/socket.h> #include <sys/wait.h> #define MYPORT 3490    /* the port users will be connecting to */#define BACKLOG 10     /* how many pending connections queue will hold */main(){	int sockfd, new_fd;  /* listen on sock_fd, new connection on new_fd */	struct sockaddr_in my_addr;    /* my address information */	struct sockaddr_in their_addr; /* connector's address information */	int sin_size;	if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) 	{	    perror("socket error");	    exit(1);	}	printf("socket sucess\n");	my_addr.sin_family = AF_INET;         /* host byte order */	my_addr.sin_port = htons(MYPORT);     /* short, network byte order */	my_addr.sin_addr.s_addr = INADDR_ANY; /* auto-fill with my IP */	bzero(&(my_addr.sin_zero), 8);        /* zero the rest of the struct */	if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1) 	{	    perror("bind error");	    exit(1);	}	printf("bind sucess\n");	if (listen(sockfd, BACKLOG) == -1) 	{	    perror("listen error");	    exit(1);	}	printf("listen sucess\n");	while(1) 	{                  /* main accept() loop */		sin_size = sizeof(struct sockaddr_in);		if ((new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size)) == -1) 		{			perror("accept error\n");			continue;		}		printf("server: got connection from %s\n", inet_ntoa(their_addr.sin_addr));		if (!fork()) 		{        /* this is the child process */			if (send(new_fd, "Hello, world!\n", 14, 0) == -1)			perror("send error\n");			close(new_fd);			exit(0);		}		close(new_fd);  /* parent doesn't need this */		while(waitpid(-1,NULL,WNOHANG) > 0); /* clean up child processes */	}}

⌨️ 快捷键说明

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