迭代式服务器 -- 实现字符回射

服务器端
/* * echoserveri.c - An iterative echo server */
#include "rio.h"void echo(int connfd);int main(int argc, char **argv)
{int listenfd, connfd, port, clientlen;struct sockaddr_in clientaddr;  // Enough space for any address struct hostent *hp; char *haddrp; if (argc != 2) {fprintf(stderr, "usage: %s <port>\n", argv[0]);exit(0);}port = atoi(argv[1]); listenfd = Open_listenfd(port);while (1) {clientlen = sizeof(clientaddr); connfd = Accept(listenfd, (SA *)&clientaddr, &clientlen);hp = Gethostbyaddr((const char *)&clientaddr.sin_addr.s_addr,sizeof(clientaddr.sin_addr.s_addr), AF_INET); haddrp = inet_ntoa(clientaddr.sin_addr);printf("server connected to (%s, %s)\n", hp->h_name, haddrp);echo(connfd);sleep(5);   // wait 5s before close connfdClose(connfd);}exit(0);
}
客户端
/** echoclient.c - An echo client*/#include "rio.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));Rio_readlineb(&rio, buf, MAXLINE);Fputs(buf, stdout);}Close(clientfd); exit(0);
}

上面代码中所使用的头文件(rio.h)及其实现(rio.c)在上篇博客里。

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

迭代式客户端-服务系模型相关推荐

  1. gRPC的通信方式-客户端流式、服务端流式、双向流式在Java的调用示例

    场景 gPRC简介以及Java中使用gPRC实现客户端与服务端通信(附代码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/ ...

  2. 软件设计的不同模型:瀑布式、快速原型法、迭代式(敏捷)

    自从1968年提出"软件工程"概念以来,软件开发领域对于借鉴传统工程的原则.方法,以提高质量.降低成本的探索就从未停止过.而在这个过程中,提出了许多不同的软件开发模型,典型的有:瀑 ...

  3. 软件设计的不同模型:瀑布式、快速原型法以及迭代式

    自从1968年提出"软件工程"概念以来,软件开发领域对于借鉴传统工程的原则.方法,以提高质量.降低成本的探索就从未停止过.而在这个过程中,提出了许多不同的软件开发模型,典型的有:瀑 ...

  4. OSI七层模型以及TCP/UDP客户端/服务端程序实例

    OSI七层模型以及TCP/UDP客户端/服务端程序实例 一.前言 二.OSI简介 2.1 OSI概念 2.2 划分原则 2.3 OSI七层模型 2.4 模型举例 三.Linux下TCP/UDP程序开发 ...

  5. 摩根大通打造ChatGPT式人工智能服务;度小满开源金融大模型“轩辕”;2022年中国数字孪生市场规模超100亿元丨每日大事件...

    ‍ ‍数据智能产业创新服务媒体 --聚焦数智 · 改变商业 企业动态 阿里巴巴:网传裁员为谣言,今年预估新招15000人 5月25日,阿里巴巴集团官微宣布,2023年六大业务集团总计需新招15000人 ...

  6. 【软件分析】软件分析、设计与建模迭代式详解

    软件分析.设计与建模迭代式详解 1.introduction 1.1 OOA/D 1.2 Iterative, Evolutionary, and Agile 2.Case Study and Req ...

  7. 3.1.2 消费者客户端的线程模型

    3.1.2 消费者客户端的线程模型 消费者连接器的createMessageStreams()方法会调用consume()方法,但consume()方法并不真正消费数据,而只是为消费消息做准备工作,具 ...

  8. 动量迭代式对抗噪声生成方法 | VALSE2018年度杰出学生论文奖

    编者按:深度模型的精度和速度长期以来成为了评价模型性能的核心标准,但即使性能优越的深度神经网络也很容易被对抗样本攻击.因此,寻找到合适的对抗攻击策略可有效提升模型本身的鲁棒性.本文作者提出了基于动量的 ...

  9. 基于微服务成熟度模型的高可用优化实践

    前言 随着微服务的流行,每个互联网公司后台都有无数大大小小的服务,服务与服务之间又有着千丝万缕的调用关系.要保证整个微服务系统的成熟稳定,就必须保证每个微服务的成熟度.但如何来定义服务的成熟度?应该从 ...

最新文章

  1. 决策树--信息增益,信息增益比,Geni指数的理解
  2. 怎么可以查到AD里面长时间没有登录的帐号
  3. DDoS不同层面的防护-Vecloud
  4. POJ1696 Space Ant
  5. linux+bbu电池模块,服务器Raid卡电池自动充电
  6. socket服务器显示未响应,“程序未响应”的思考总结
  7. hdu 5112 A Curious Matt
  8. C语言文件与数组之间输入输出操作
  9. Git 仓库基础操作
  10. centos 7 源码方式安装mysql5.6
  11. 【Kafka】BrokerNotAvailableException: Error choosing node for describeLogDirs: no node found.
  12. 怎样把php网站转为h5,【php】php如何把网页中的一部分生成.jpg
  13. 第二届大数据世界论坛 聚焦行业需求
  14. 马化腾谈滴滴;苹果供应商研发柔性玻璃;丁磊谈沉迷手机 | 极客头条
  15. 读《JavaScript权威指南》笔记(三)--对象
  16. ELAS_ROS算法 在 KITTI数据集 实践
  17. Flash:任意变形工具的使用
  18. linux清理根目录下的垃圾,Linux 根目录满了解决方法
  19. 把幽灵和熔断关闭_比较幽灵和三巨头
  20. 若依管理系统windows本地运行教程

热门文章

  1. OpenCV中Kinect的使用(3)
  2. javascipt很有用的代码,实现全选与反选,还可以与struts2或sevelet交互使用
  3. ECCV 2020 论文大盘点-自动驾驶篇
  4. 小小一行Python命令,居然把电脑变成服务器
  5. 计算机视觉论文-2021-07-06
  6. 计算机视觉论文-2021-06-15
  7. 收藏 | 让你纵横 GitHub 的五大神器
  8. 收藏 | 一文读懂深度学习中的各种卷积
  9. 吴恩达deeplearning.ai新课上线:TensorFlow移动和web端机器学习
  10. ARM全新Armv9架构:10年最大更新、增强AI和security能力