Linux网络基础2之协议

 (。・∀・)ノ゙嗨!你好这里是ky233的主页:这里是ky233的主页,欢迎光临~icon-default.png?t=N7T8https://blog.csdn.net/ky233?type=blog

点个关注不迷路⌯'▾'⌯

目录

1.协议

1.序列化与反序列换

2.协议定制

二、网络版本的计算器

1.约定与协议

2.守护进程

3.代码


1.协议

协议是一种 "约定". socket api的接口, 在读写数据时, 都是按 "字符串" 的方式来发送接收的. 如果我们要传输一些 "结构化的数据" 怎么办呢? 

1.序列化与反序列换

发送数据时将这个结构体按照一个规则转换成字符串, 接收到数据的时候再按照相同的规则把字符串转 化回结构体;

这个过程叫做 "序列化" 和 "反序列化"

2.协议定制

所谓的协议定制是来定义请求以及未来响应的字段都需要哪些,字段本身就是协议的一部分,还有很多细节在代码中体现出来

二、网络版本的计算器

1.约定与协议

约定:就比如是我们规定好的计算顺序,如果顺序不对则无法进行计算

协议:

  • 我们结构化的约定就叫做协议
  • 我们需要把这些数据发给服务器或者客户端,就需要把这些数据转换成字节流,对方基于收到的字节流,对其做反序列化,无论是发送或接受都需要进行序列和反序列化!

因为TCP是面向字节流的(TCP有可能一个一个读也有可能一次全部读完),那么我们读取的时候怎么保证是一个完整的请求呢?

当我们调用send或者write的时候只是把我们的数据拷贝到了发送缓冲区,在调recv或者read的时候之后只是把接受缓冲区拷贝到用户定义的缓冲区

所以:

  • io接口:本质都是拷贝函数
  • 发送的次数和接受的次数,没有任何关系,叫做面向字节流!

 单纯的recv是无法解决这个问题的,所以需要更进一步的协议定制

UDP是面向数据报的,每次都是完整的报文,则不会有上述问题

2.守护进程

1.前台进程:和终端关联的进程,判断标准为,该进程能否获取输入,如bash

2.任何xshell登录,只允许一个前台进程和多个后台进程

3.进程除了有自己的pid和ppid,还有组id TPGID

4.在命令行中,同时用管道启动多个进程,多个进程是兄弟关系,父进程是bash,可以用匿名来进行管道通信

5.而同时被创建的多个进程可以成为一个进程组的概念,组长一般是第一个进程PGID

6.SID:任何一次登录,登陆的用户,需要有多个进程(组),来给这个用户提供服务的(bash),用户自己可以启动很多进程,或者进程组。我们给用户提供服务的进程,或者用户自己启动的所有的进程或者服务,整体都是属于一个叫做会话的机制中的

退出登陆的时候,启动的服务就有可能退出,但是我们需要一种服务不退出的机制就叫做守护进程,所以我们就需要把这个进程自成一个会话,

7.如何将自己变成自成会话呢?

调用setsid()函数 ,就把这个进程变成单独的会话组了

8.setsid要成功被调用,必须保证当前进程不是进程组的组长

那么怎么保证不是组长呢?可以通过fock(),变成子进程

9.守护进程不能向显示打印消息,一旦打印会被暂停

devnull相当于linux的文件黑洞,任何到里面的东西自动销毁

3.代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/444461.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LLM实施的五个阶段

原文地址:Five Stages Of LLM Implementation 大型语言模型显着提高了对话式人工智能系统的能力,实现了更自然和上下文感知的交互。这导致各个行业越来越多地采用人工智能驱动的聊天机器人和虚拟助手。 2024 年 2 月 20 日 介绍 从LLMs的市场采用情况可以…

armv8/armv9 MMU深度学习

目录 1、MMU概念介绍2、虚拟地址空间和物理地址空间2.1、(虚拟/物理)地址空间的范围2.2、物理地址空间有效位(范围)2.2.1、页表翻译相关寄存器的配置 3、Translation regimes4、地址翻译/几级页表?4.1、思考:页表到底有几级?4.2、以4KB granu…

【数据通信】数据通信基础知识---信号

1. 信息、数据、信号 信息是人们通过施加于数据的一些规定而赋予数据的特定含义(ISO定义)通信就是在信源和信宿之间传递信息。 信息和消息的关系:消息中包含信息,消息不等于信息。 消息所包含信息的多少,与在收到消息…

前端框架的发展历程

文章目录 前言 一、静态页面时代 二、JavaScript的兴起 三、jQuery的出现 四、前端框架的崛起 1.AngularJS 2.React 3.Vue.js 五、面向组件化的发展趋势 总结 前言 前端框架的发展史就是一个不断进化的过程,它的发展和进化一定程度…

你还可以通过“nrm”工具,来自由管理“npm”的镜像

你还可以通过“nrm”工具,来自由管理“npm”的镜像 nrm(npm registry manager)是npm的镜像管理工具,有时候国外的资源太慢,使用这个就可以快速地在npm源间切换。 1.安装nrm 在命令行执行命令,npm install…

数字化转型导师坚鹏:科技金融政策、案例及数字化营销

科技金融政策、案例及数字化营销 课程背景: 很多银行存在以下问题: 不清楚科技金融有哪些利好政策? 不知道科技金融有哪些成功案例? 不知道科技金融如何数字化营销? 课程特色: 以案例的方式解读原…

Matlab|10节点潮流计算程序(通用性强)

主要内容 潮流计算程序matlab 牛拉法 采用matlab对10节点进行潮流计算,采用牛拉法,程序运行可靠,牛拉法实现通用性强,可替换参数形成其他节点系统的潮流计算程序。 下载链接

探索React中的类组件和函数组件

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

深入浅出计算机网络 day.1 概论① 信息时代的计算机网络

我想, 我不会暗下来的, 生命是周而复始的橙黄橘绿时 —— 24.3.9 内容概述 计算机网络的各类应用 计算机网络带来的负面问题 我国互联网发展情况 一、计算机网络的各类应用 1.信息浏览和发布 2.通信和交流 3.休闲和娱乐 4.资源共享…

数据库-第十一章 并发控制【期末复习|考研复习】

前言 总结整理不易,希望大家点赞收藏。 给大家整理了一下数据库系统概论中的重点概念,以供大家期末复习和考研复习的时候使用。 参考资料是王珊老师和萨师煊老师的数据库系统概论(第五版)。 数据库系统概论系列文章传送门: 第一章 绪论 第二/…

UE5.2 SmartObject使用实践

SmartObject是UE5新出的一项针对AI的功能,可为开发者提供如公园长椅、货摊等交互对象的统一外观封装,如UE的CitySample(黑客帝国Demo)中就运用到了SmartObject。 但SmartObject实践起来较为繁琐,主要依赖于AI及行为树…

LeetCode-1004. 最大连续1的个数 III

每日一题系列(day 20) 前言: 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 &#x1f50…

ActiveRAG—主动学习

原文地址:ActiveRAG — Active Learning 2024 年 2 月 26 日 大型语言模型(LLM)的出现开创了对话式人工智能的新时代。这些模型可以生成非常类似人类的文本,并且比以往更好地进行对话。然而,他们仍然面临着仅仅依靠预先…

浅析开源内存数据库Fastdb

介绍: Fastdb是免费开源内存数据库,其优秀的性能,和简洁的C代码,让我学习使用过程中收益颇多,但是国内中文相关研究的文章相当稀少,外文我查询相当不便。有兴趣的朋友可以通过以下网站访问:Mai…

Groovy语言

1 Groovy介绍 1.1 Groovy介绍 Groovy是一种编程语言,它结合了Java的强大功能和脚本语言的简洁性。它具有动态类型、易读的语法、与Java的紧密集成、脚本编程能力、强大的闭包等特点。 1.2 Groovy SQL介绍 Groovy SQL是 Groovy 编程语言的一部分,用于…

你应该打好你的日志,起码避免被甩锅

大家好,我是蓝胖子,相信大家或多或少都有这样的经历,当你负责的功能出现线上问题时,领导第一时间便是找到你询问原因,然而有时问题的根因或许不在你这儿,只是这个功能或许依赖了第三方或者内部其他部门,这个…

Spring Boot 自动装配的原理!!!

SpringBootApplication SpringBootConfiguration:标识启动类是一个IOC容器的配置类 EnableAutoConfiguration: AutoConfigurationPackage:扫描启动类所在包及子包中所有的组件,生…

Mint_21.3 drawing-area和goocanvas的FB笔记(七)

FreeBASIC gfx 基本 graphics 绘图 8、ScreenControl与屏幕窗口位置设置 FreeBASIC通过自建屏幕窗口摆脱了原来的屏幕模式限制,既然是窗口,在屏幕坐标中就有它的位置。ScreenControl GET_WINDOW_POS x, y 获取窗口左上角的x, y位置;ScreenC…

小程序网页view多行文本超出隐藏或显示省略号

实现效果: 限制两行,超出即显示省略号 实现:话不多说,展示代码 关键代码 .box{ width:100rpx; overflow:hidden; text-overflow: ellipsis;//超出省略号 display:-webkit-box; -webkit-line-clamp: 2;//显…

【数学】【组合数学】1830. 使字符串有序的最少操作次数

作者推荐 视频算法专题 本博文涉及知识点 数学 组合数学 LeetCode1830. 使字符串有序的最少操作次数 给你一个字符串 s &#xff08;下标从 0 开始&#xff09;。你需要对 s 执行以下操作直到它变为一个有序字符串&#xff1a; 找到 最大下标 i &#xff0c;使得 1 < i…