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

📄 parallel_server_fork.c

📁 网络编程的服务端和客户端.包括用fork和select分别实现多进程编程和多线程编程.程序已经通过测试的.
💻 C
字号:
#include <sys/types.h>#include <sys/socket.h>#include <stdio.h>#include <netinet/in.h>#include <signal.h>#include <unistd.h>#include "err_exit.h"#include "socketfun.h"void doit(int client_sockfd);int main(int argc,char ** argv){	int server_sockfd,client_sockfd;	int server_len,client_len;	struct sockaddr_in client_address;	server_sockfd=make_socket(PARALLELPORT);		/* 创建连接队列,忽略子进程终止信号 */	listen(server_sockfd,LISTENQ);	signal(SIGCHLD,SIG_IGN);	while(1){		printf("server waiting\n");		/* 接收连接 */		client_len=sizeof(client_address);		client_sockfd=accept(server_sockfd,(struct sockaddr *)&client_address,&client_len);				/* 为这个客户创建一个子进程 */		if(fork()==0){						/* 若为子进程,接收并回答客户的消息 */			close(server_sockfd);			/* 子进程关闭侦听套接字 */			doit(client_sockfd);			/* 处理客户的请求 */			close(client_sockfd);			/* 已处理完该客户的请求 */			exit(0);						/* 子进程终止 */		}else{			close(client_sockfd);			/* 父进程关闭被连接的套接字 */			}	}}void doit(int client_sockfd){	char buf[MAXBUFFSIZE];	int n;		/* 接收并回应客户的消息 */	n=read(client_sockfd,buf,sizeof(buf));	buf[n]=0;	printf("string from cliet=%s\n",buf);	sleep(5);		write(client_sockfd,buf,n);	}

⌨️ 快捷键说明

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