多进程服务器 -- 实现字符回射

服务器端
/*************************************************************************
* File Name: echoserverp.c
* Author: Chen WenKe
* Email: chenwenke666@gmail.com
* Blog: https://caotanxiaoke.github.io
* Created Time: Sun 18 Jun 2017 05:47:46 PM PDT
*
* Description: 多进程并发 客户端-服务器, 完成回射功能。    ************************************************************************/#include "csapp.h"void echo(int fd);
void sigchld_handler(int sig)
{while (waitpid(-1, 0, WNOHANG) > 0);return;
}int main(int argc, char **argv)
{int listenfd, connfd, port; socklen_t clientlen = sizeof(struct sockaddr_in);struct sockaddr_in clientaddr;if (argc != 2){fprintf(stderr, "usage: %s <port>\n", argv[0]);exit(0);}port = atoi(argv[1]); Signal(SIGCHLD, sigchld_handler);listenfd = Open_listenfd(port);while(1){connfd = Accept(listenfd, (SA *) &clientaddr, &clientlen);if(Fork() == 0){Close(listenfd); echo(connfd); Close(connfd);exit(0);}Close(connfd); }
}void echo(int connfd)
{int n; char buf[MAXLINE]; rio_t rio; Rio_readinitb(&rio, connfd); while(( n= Rio_readlineb(&rio, buf, MAXLINE)) != 0){printf("server received %d bytes\n", n); Rio_writen(connfd, buf, n); }
}
客户端
/*************************************************************************
* File Name: echoclient.c
* Author: Chen WenKe
* Email: chenwenke666@gmail.com
* Blog: https://caotanxiaoke.github.io
* Created Time: Sun 18 Jun 2017 08:00:49 PM PDT
*
* Description: ************************************************************************/#include "csapp.h"int main(int argc, char **argv)
{int clientfd, port; char *host, buf[MAXLINE];rio_t rio;if (argc != 3){fprintf(stderr, "usage: %s <host> <port>\n", argv[0]);exit(0); }host = argv[1]; port = atoi(argv[2]);clientfd = Open_clientfd(host, port); Rio_readinitb(&rio, clientfd); while (Fgets(buf, MAXLINE, stdin) != NULL){Rio_writen(clientfd, buf, strlen(buf)); Fputs(buf, stdout); }Close(clientfd);exit(0);
}

上面代码中所使用的头文件及编译方法

转载于:https://www.cnblogs.com/acm1314/p/7050301.html

多进程客户端-服务器模型相关推荐

  1. udp客户端与服务器端模型_客户端-服务器模型

    udp客户端与服务器端模型 As mentioned in the previous article, one of the requirements of using PHP on a page i ...

  2. TCP网络编程----C/S模型 (客户端/服务器模型)的代码实现

    TCP网络编程----C/S模型 (客户端/服务器模型)的代码实现 client发送数据到server,server对数据进行提取并根据用户输入的操作符进行两个数的计算,并将计算结果传给client. ...

  3. 开源 多进程 框架 c++_linux fork多进程并发服务器模型之C/C++代码实战

    今天我们一起来聊聊多进程实现与多个客户端进行通信. 如果是在while中循环accept, 然后循环处理事情, 此时, 这种服务是迭代服务, 只能逐一处理客户端的请求, 后一个请求必须等前一个请求处理 ...

  4. linux qq多进程客户端,基于多进程QQ聊天软件设计.doc

    基于多进程QQ聊天软件设计 基于多进程的QQ聊天程序设计功能需求描述用户名登陆聊天,人与人之间交流是必不可少的.私聊,与特定的用户聊天群聊,向所有的用户发送消息,大家一起聊欢乐多 server端 输入 ...

  5. 简单客户端服务器模型(C++、python和go语言示例)

    工作中用到了C/S模型,所做的也无非是给服务器发数据,但开发阶段会遇到程序自身的回环测试,需要用到简单的服务端以便验证数据发送的正确性. 写软件用C++,跑测试用python,这段时间也刚好看go语言 ...

  6. 计算机网络套接字编程实验-TCP多进程并发服务器程序与单进程客户端程序(简单回声)

    1.实验系列 ·Linux NAP-Linux网络应用编程系列 2.实验目的 ·理解多进程(Multiprocess)相关基本概念,理解父子进程之间的关系与差异,熟练掌握基于fork()的多进程编程模 ...

  7. Python网络编程(线程通信、GIL、服务器模型)

    什么是进程.进程的概念? 进程的概念主要有两点: 第一,进程是一个实体.每一个进程都有它自己的地址空间, 一般情况下,包括文本区域(text region).数据区域(data region)和堆栈( ...

  8. .NET智能客户端(SmartClient)

    简介 智能客户端的概念作为Microsoft.net平台的一个特性而被提出,其实它的很多功能在传统的应用程序中早已存在,只是.net平台从系统和语言级别对它提供了支持,使开发智能客户端应用程序更为便捷 ...

  9. 使用socket创建服务器进程和客户端进程

    TCP客户端和服务器创建流程在上篇博文中已经说明: TCP客户端服务器模型创建流程 服务器进程 #include <netdb.h> #include <sys/socket.h&g ...

最新文章

  1. YOLOv3和YOLOv4长篇核心综述(下)
  2. 美国德州光伏装机可能拉低当地峰值电价
  3. boost::phoenix::if_相关的测试程序
  4. 【转】ABP源码分析六:依赖注入的实现
  5. Oracle date 插入显示公元前日期
  6. (06)System Verilog 数组类型示例
  7. 8 一点就消失_农村即将消失的15个“老物件”,件件充满回忆,全认识说明你老了...
  8. Python的filter、map、reduce与lambda结合使用
  9. 【语音处理】基于matlab GUI语音信号处理与滤波【含Matlab源码 1663期】
  10. matlab报错随笔
  11. html 车牌号输入代码,html中车牌号省份简称输入键盘的示例代码
  12. 计算机体系结构实验1——计算机性能评测
  13. 备用计算机机房管理制度,计算机机房管理规定
  14. Traitors Eight 硅谷“八叛徒”
  15. 多台机器同步Windows上的文件 -cwRsync 同步问题
  16. linux怎么查看hwaddr_Linux查看MAC地址方法
  17. Ajax上传视频文件
  18. matlab 投票法_二维解析张量投票算法研究
  19. anaconda 和Tensorflow 2 安装
  20. Java 程序员们值得一看的好书推荐

热门文章

  1. [转]linux系统增加swap大小方法(安装oracle可能需要)
  2. 阿里 双11 同款流控降级组件 Sentinel Go 正式 GA,助力云原生服务稳稳稳
  3. OpenYurt 开箱测评 | 一键让原生 K8s 集群具备边缘计算能力
  4. jsp mysql在线考试系统源码_jsp+ssm+mysql实现的学生在线考试系统项目源码附带视频导入运行教程...
  5. 单片机程序配置成开漏输出_单片机I/O开漏输出详解
  6. linux mysql 不稳定_Linux服务器mysql数据库自动停止的解决方法 | 很文博客
  7. python popen sqlplus_Python基于Select模型实现Popen输出
  8. mac查看图片分辨率_Mac图像检查工具-Graphic Inspector
  9. 人工智能用python还是java_学会java和python语言,可以开始搞人工智能吗?
  10. 在python中print表示的数据类型是_python之数据类型