Linux c++(socket网络通信 & 多进程服务器)
2021/5/9 7:29:49
本文主要是介绍Linux c++(socket网络通信 & 多进程服务器),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
#include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <sys/types.h> #include <arpa/inet.h> #include <string.h> #include <ctype.h> #include <signal.h> #include <sys/wait.h> #include <errno.h> void sigCatchFun(int num) { pid_t wpid ; while((wpid= waitpid(-1,NULL,WNOHANG))>0){ printf("sig child OK\n"); } } int main(int argc,char *argv[]) { if(argc< 2) { printf("eg: ./app port"); exit(1); } struct sockaddr_in serv_addr; socklen_t serv_len = sizeof(serv_addr); int port = atoi(argv[1]); //创建套接字 int lfd = socket(AF_INET,SOCK_STREAM,0); //初始化服务器 memset(&serv_addr,0,serv_len); serv_addr.sin_family=AF_INET; serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); serv_addr.sin_port = htons(port); //绑定IP和端口 bind(lfd,(struct sockaddr*)&serv_addr,serv_len); //设置同时监听的最大个数 listen(lfd,36); printf("Start accept ......\n"); struct sigaction actobj; actobj.sa_flags=0; actobj.sa_handler = sigCatchFun; sigemptyset(&actobj.sa_mask); sigaction(SIGCHLD,&actobj,NULL); struct sockaddr_in client_addr; socklen_t cli_len = sizeof(client_addr); while(1) { // 父进程接收连接请求 int cfd = accept(lfd,(struct sockaddr*)&client_addr,&cli_len); if (cfd == -1 && errno == EINTR) { cfd = accept(lfd,(struct sockaddr*)&client_addr,&cli_len); } //创建子进程 pid_t pid = 0; pid=fork(); if(pid == 0) { close(lfd); while(1) { char buf[1024]; int len = read(cfd,buf,sizeof(buf)); if(len == -1) { perror("read error"); exit(2); }else if(len == 0) { printf("客户端已断开连接\n"); close(cfd); break; }else{ printf("recf buf: %s\n",buf); write(cfd,buf,len); } } //干掉子进程 return 0; }else if(pid > 0) close(cfd); } } close(lfd); return 0; }
这篇关于Linux c++(socket网络通信 & 多进程服务器)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23linux 系统宝塔查看网站访问的命令是什么?-icode9专业技术文章分享
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南