迭代式客户端-服务系模型
迭代式服务器 -- 实现字符回射
服务器端
/* * 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
迭代式客户端-服务系模型相关推荐
- gRPC的通信方式-客户端流式、服务端流式、双向流式在Java的调用示例
场景 gPRC简介以及Java中使用gPRC实现客户端与服务端通信(附代码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/ ...
- 软件设计的不同模型:瀑布式、快速原型法、迭代式(敏捷)
自从1968年提出"软件工程"概念以来,软件开发领域对于借鉴传统工程的原则.方法,以提高质量.降低成本的探索就从未停止过.而在这个过程中,提出了许多不同的软件开发模型,典型的有:瀑 ...
- 软件设计的不同模型:瀑布式、快速原型法以及迭代式
自从1968年提出"软件工程"概念以来,软件开发领域对于借鉴传统工程的原则.方法,以提高质量.降低成本的探索就从未停止过.而在这个过程中,提出了许多不同的软件开发模型,典型的有:瀑 ...
- OSI七层模型以及TCP/UDP客户端/服务端程序实例
OSI七层模型以及TCP/UDP客户端/服务端程序实例 一.前言 二.OSI简介 2.1 OSI概念 2.2 划分原则 2.3 OSI七层模型 2.4 模型举例 三.Linux下TCP/UDP程序开发 ...
- 摩根大通打造ChatGPT式人工智能服务;度小满开源金融大模型“轩辕”;2022年中国数字孪生市场规模超100亿元丨每日大事件...
数据智能产业创新服务媒体 --聚焦数智 · 改变商业 企业动态 阿里巴巴:网传裁员为谣言,今年预估新招15000人 5月25日,阿里巴巴集团官微宣布,2023年六大业务集团总计需新招15000人 ...
- 【软件分析】软件分析、设计与建模迭代式详解
软件分析.设计与建模迭代式详解 1.introduction 1.1 OOA/D 1.2 Iterative, Evolutionary, and Agile 2.Case Study and Req ...
- 3.1.2 消费者客户端的线程模型
3.1.2 消费者客户端的线程模型 消费者连接器的createMessageStreams()方法会调用consume()方法,但consume()方法并不真正消费数据,而只是为消费消息做准备工作,具 ...
- 动量迭代式对抗噪声生成方法 | VALSE2018年度杰出学生论文奖
编者按:深度模型的精度和速度长期以来成为了评价模型性能的核心标准,但即使性能优越的深度神经网络也很容易被对抗样本攻击.因此,寻找到合适的对抗攻击策略可有效提升模型本身的鲁棒性.本文作者提出了基于动量的 ...
- 基于微服务成熟度模型的高可用优化实践
前言 随着微服务的流行,每个互联网公司后台都有无数大大小小的服务,服务与服务之间又有着千丝万缕的调用关系.要保证整个微服务系统的成熟稳定,就必须保证每个微服务的成熟度.但如何来定义服务的成熟度?应该从 ...
最新文章
- 决策树--信息增益,信息增益比,Geni指数的理解
- 怎么可以查到AD里面长时间没有登录的帐号
- DDoS不同层面的防护-Vecloud
- POJ1696 Space Ant
- linux+bbu电池模块,服务器Raid卡电池自动充电
- socket服务器显示未响应,“程序未响应”的思考总结
- hdu 5112 A Curious Matt
- C语言文件与数组之间输入输出操作
- Git 仓库基础操作
- centos 7 源码方式安装mysql5.6
- 【Kafka】BrokerNotAvailableException: Error choosing node for describeLogDirs: no node found.
- 怎样把php网站转为h5,【php】php如何把网页中的一部分生成.jpg
- 第二届大数据世界论坛 聚焦行业需求
- 马化腾谈滴滴;苹果供应商研发柔性玻璃;丁磊谈沉迷手机 | 极客头条
- 读《JavaScript权威指南》笔记(三)--对象
- ELAS_ROS算法 在 KITTI数据集 实践
- Flash:任意变形工具的使用
- linux清理根目录下的垃圾,Linux 根目录满了解决方法
- 把幽灵和熔断关闭_比较幽灵和三巨头
- 若依管理系统windows本地运行教程