当前位置: 首页 > news >正文

TCP单进程循环服务器程序与单进程客户端程序

实验目的

理解并掌握以下内容:

  1. 网络进程标识(即套接字地址)在Linux中的数据结构与地址转换函数。
  2. 网络字节序与主机字节序的定义、转换以及相关函数在网络编程中的应用。
  3. 数据结构内存对齐的基本规则,以及基于数据结构构建PDU的基本方法。
  4. TCP单进程循环服务器与单进程客户端的编程模式,包括但不限于:
    • 客户端与服务器套接字系统调用基本流程。
    • 服务器对于客户端正常结束的识别与处理。
    • 客户端基于命令行指令的退出设计与实现。
    • Linux软中断信号处置原则与实际应用(SIGINT,SIGPIPE)。
    • 慢系统调用的软中断退出问题及其处理。

实验内容

编写TCP单进程循环服务器与单进程客户端,其中客户端可以向服务器发送二元运算请求PDU,服务器收到请求后解析PDU,获取运算符与操作数,执行运算并向客户端返回运算结果。具体要求如下:

  • 二元运算包括加(+,ADD)、减(-,SUB)、乘(*,MUL)、整除(/,DIV)、取模(%,MOD),运算数及结果均为64位有符号整型数。
  • 计算指令在命令行以 operator operand1 operand2 的形式给出,如 ADD 123 456
  • 客户端从 stdin 读取解析运算指令后,构建"计算请求报文RQT PDU"并发送给服务器。
  • 服务器读取解析RQT PDU,按要求进行运算,并将运算结果封装为"计算回复报文REP PDU"发回客户端。
  • 客户端读取解析REP PDU,提取计算结果,并基于从 stdin 读取解析的运算指令构建运算表达式,且输出至 stdout

PDU设计定义

  • 本实验设定PDU没有头部(Header),仅有定长负载(Fixed-length Payload)。
  • 请求报文RQT PDU包含一个操作符与两个操作数,而回复报文REP PDU则只包含运算结果。

操作符

  • 操作符包括 +-*/% 五种类型,使用32位有符号整数表示。操作符与其编号映射关系为:
    • 加 (+): 0x00000001
    • 减 (-): 0x00000002
    • 乘 (*): 0x00000004
    • 整除 (/): 0x00000008
    • 取模 (%): 0x00000010

数据结构

  • 左操作数 OP1、右操作数 OP2 及运算结果 RES 均为64位有符号整数。
  • 必须使用 <stdint.h> 定义的定长整数类型,如 int32_t

相关文章:

TCP单进程循环服务器程序与单进程客户端程序

实验目的 理解并掌握以下内容: 网络进程标识(即套接字地址)在Linux中的数据结构与地址转换函数。网络字节序与主机字节序的定义、转换以及相关函数在网络编程中的应用。数据结构内存对齐的基本规则,以及基于数据结构构建PDU的基本方法。TCP单进程循环服务器与单进程客户端的…...

QT+winodow 代码适配调试总结(二)

已经好多年了&#xff0c; linux环境下不同版本的QT程序开发和部署&#xff0c;突然需要适配window环境程序调试&#xff0c;一堆大坑&#xff0c;还真是一个艰巨的任务&#xff0c;可是kpi下的任务计划&#xff0c;开始吧&#xff01;&#xff01; 1、首先我们自定义的动态库…...

百家讲坛 | 裴伟伟:企业中安全团队应当如何反馈漏洞

作者简介&#xff1a;裴伟伟&#xff0c;洞源实验室创始人&#xff0c;国家网安基地网络安全行业专家&#xff0c;网安加社区特聘专家&#xff0c;持有CISSP、PMP证书&#xff0c;曾在HITCON、可信云大会、开源产业大会等安全论坛发表演讲。曾任国内某安全实验室负责人、某互金…...

巧用Fiddler中的Comments提升接口测试效率

有没有同学在使用Fiddler时跟我遇到了同样的问题&#xff0c;就是想给某个抓包的请求进行注释&#xff01;&#xff01;&#xff01;但是奇怪的是&#xff0c;根本没有Comments相关信息呀&#xff1f; 设置Comments 设置Comments非常容易&#xff0c;选中一个请求&#xff0c…...

停车场车牌识别计费系统,用Python如何实现?

关注星标&#xff0c;每天学习Python新技能 前段时间练习过的一个小项目&#xff0c;今天再看看&#xff0c;记录一下~ 项目结构 说明&#xff1a; datefile文件夹&#xff1a;保存车辆信息表的xlsx文件 file文件夹&#xff1a;保存图片文件夹。ic_launcher.jpg是窗体的右上角…...

Linux内核——Linux内核体系模式(二)

1 Linux系统的中断机制 Linux内核将中断分为两类&#xff1a;硬件中断和软件中断&#xff08;异常&#xff09;。每个中断是由0-255之间的一个数字进行标识。 中断int0-int31&#xff08;0x00-0x1f&#xff09;作为异常int32-int255由用户自己设定 int32-int47对应与8259A中断…...

Spring MVC的高级功能——异常处理(一)简单异常处理器

一、HandlerExceptionResolver接口 如果希望对Spring MVC中所有异常进行统一处理&#xff0c;可以使用Spring MVC提供的异常处理器HandlerExceptionResolver接口。Spring MVC内部提供了HandlerExceptionResolver的实现类SimpleMappingExceptionResolver。它实现了简单的异常处理…...

【面试干货】Static关键字的用法详解

【面试干货】Static关键字的用法详解 1、Static修饰内部类2、Static修饰方法3、Static修饰变量4、Static修饰代码块5、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在Java编程语言中&#xff0c;static是一个关键字&#xff0c;它可…...

软件工程实验

实验环境和需求 用户可以对相片进行按类别管理&#xff0c;用户可以设定不同的类别&#xff0c;然后上传照片到相应的类别中&#xff0c;并能进行照片的删除&#xff0c;注释 运行 运行并访问 localhost 8090,图片在数据库中的信息是D&#xff1a;/upgrade 后面的内容 se…...

对于复杂的网页布局,如多列布局和网格布局,CSS 有哪些最佳实践和技巧?

对于复杂的网页布局&#xff0c;如多列布局和网格布局&#xff0c;以下是一些CSS的最佳实践和技巧&#xff1a; 使用Flexbox或CSS Grid布局&#xff1a;Flexbox和CSS Grid是两个强大的CSS布局模型&#xff0c;可用于实现复杂的网页布局。Flexbox适用于单行或单列布局&#xff0…...

Spring Boot中集成Redis实现缓存功能

Spring Boot中集成Redis实现缓存功能 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将深入探讨如何在Spring Boot应用程序中集成Redis&#xff0c;实现…...

arco disign vue 日期组件的样式穿透

问题描述: 对日期组件进行样式穿透. 原因分析: 如图,日期组件被展开时它默认将dom元素挂载到body下, 我们的页面在idroot的div 里层, 里层想要穿透外层是万万行不通的. 解决问题: 其实官网提供了参数,但是并没有提供例子, 只能自己摸索着过河. 对于日期组件穿透样式,我们能…...

【深度学习】pytorch训练中的一个大坑

使用的命令&#xff1a;iostat -x 5 可以看到 ssd的利用率已经满了。 之前在的数据集放在了 hdd上&#xff0c;训练结果特别慢。 所以我把它移动到了ssd上&#xff0c;然后训练参数用的 resume&#xff0c; 但是&#xff01;&#xff01;&#xff01;&#xff01;它把历史记住…...

python全局解释器锁(GIL)

文章目录 1.cpu工作方式2.python全局解释器锁与多线程3.其他语言的多线程4.如何解决假的多线程 1.cpu工作方式 先来先服务&#xff08;First Come, First Served&#xff0c;FCFS&#xff09;&#xff1a; 最简单的调度算法&#xff0c;按照作业或进程到达的顺序依次执行。没有…...

无人机的起源

无人机起源于20世纪初的早期实验阶段&#xff0c;并随着技术进步逐步发展。无人机&#xff0c;作为现代科技领域中的一项重要创新&#xff0c;已经在全球范围内展现出其巨大的潜力和应用价值。 无人机的历史可以追溯到1917年&#xff0c;美国人艾德温.奥斯特林发明了“飞行训练…...

专题六:Spring源码之初始化容器BeanFactory

上一篇咱们通过一个例子介绍初始化容器上下文相关内容&#xff0c;并通过两个示例代码看到了Spring在设计阶段为我预留的扩展点&#xff0c;和我们应该如何利用这两个扩展点在Spring初始化容器上下文阶段为我们提供服务。这一篇咱们接着往下看。 老这样子下回到refresh方法上来…...

缓存双写一致性(笔记)

缓存更新方案 旁路缓存模式 这是比较多的 旁路缓存模式&#xff1a;缓存有就返回&#xff0c;没有数据库查询&#xff0c;放入缓存返回。 还有些常用缓存策略 读穿透模式 读穿透和旁路很相似&#xff0c;程序不需要关注从哪里读取数据&#xff0c;它只需要从缓存查询数据。…...

运动馆预约管理系统设计

设计一个运动馆预约管理系统&#xff0c;需要考虑到用户需求、系统功能、技术实现和用户体验等多个方面。以下是一个基本的设计框架&#xff1a; 1. 系统目标 提供便捷的运动场地预约服务。 实现运动馆资源的有效管理和利用。 支持在线支付&#xff0c;提高交易效率。 提供数…...

第五届计算机、大数据与人工智能国际会议(ICCBD+AI 2024)

随着科技的飞速发展&#xff0c;计算机、大数据和人工智能等前沿技术已成为推动社会进步的重要力量。为了加强这一领域的学术交流与合作&#xff0c;促进技术创新与发展&#xff0c;第五届计算机、大数据与人工智能国际会议&#xff08;ICCBDAI 2024&#xff09;将于2024年11月…...

高效的向量搜索算法——分层可导航小世界图(HNSW)

最近在接触大模型相关内容&#xff0c;发现一种高效的向量搜索算法HNSW&#xff0c;这里做一下记录。 在之前自己也接触过一段时间的复杂网络&#xff08;网络科学&#xff09;&#xff0c;没想到&#xff0c;将网络科学的思想引入到向量搜索算法中&#xff0c;可以产生令人眼前…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

SQL慢可能是触发了ring buffer

简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量&#xff1a;setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...

智能职业发展系统:AI驱动的职业规划平台技术解析

智能职业发展系统&#xff1a;AI驱动的职业规划平台技术解析 引言&#xff1a;数字时代的职业革命 在当今瞬息万变的就业市场中&#xff0c;传统的职业规划方法已无法满足个人和企业的需求。据统计&#xff0c;全球每年有超过2亿人面临职业转型困境&#xff0c;而企业也因此遭…...

从零开始了解数据采集(二十八)——制造业数字孪生

近年来&#xff0c;我国的工业领域正经历一场前所未有的数字化变革&#xff0c;从“双碳目标”到工业互联网平台的推广&#xff0c;国家政策和市场需求共同推动了制造业的升级。在这场变革中&#xff0c;数字孪生技术成为备受关注的关键工具&#xff0c;它不仅让企业“看见”设…...

鸿蒙HarmonyOS 5军旗小游戏实现指南

1. 项目概述 本军旗小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;采用DevEco Studio实现&#xff0c;包含完整的游戏逻辑和UI界面。 2. 项目结构 /src/main/java/com/example/militarychess/├── MainAbilitySlice.java // 主界面├── GameView.java // 游戏核…...

aardio 自动识别验证码输入

技术尝试 上周在发学习日志时有网友提议“在网页上识别验证码”&#xff0c;于是尝试整合图像识别与网页自动化技术&#xff0c;完成了这套模拟登录流程。核心思路是&#xff1a;截图验证码→OCR识别→自动填充表单→提交并验证结果。 代码在这里 import soImage; import we…...

文件上传漏洞防御全攻略

要全面防范文件上传漏洞&#xff0c;需构建多层防御体系&#xff0c;结合技术验证、存储隔离与权限控制&#xff1a; &#x1f512; 一、基础防护层 前端校验&#xff08;仅辅助&#xff09; 通过JavaScript限制文件后缀名&#xff08;白名单&#xff09;和大小&#xff0c;提…...