【Linux网络编程】网络基础 | Socket 编程基础

news2024/10/24 15:16:09

在这里插入图片描述

🌈个人主页: 南桥几晴秋
🌈C++专栏: 南桥谈C++
🌈C语言专栏: C语言学习系列
🌈Linux学习专栏: 南桥谈Linux
🌈数据结构学习专栏: 数据结构杂谈
🌈数据库学习专栏: 南桥谈MySQL
🌈Qt学习专栏: 南桥谈Qt
🌈菜鸡代码练习: 练习随想记录
🌈git学习: 南桥谈Git

🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈
本科在读菜鸡一枚,指出问题及时改正

文章目录

  • 初识协议
    • 概述
    • 协议分层
    • OSI 七层模型
    • TCP/IP 五层(或四层)模型
  • 再识协议
    • 为什么要有 TCP/IP 协议?
    • 什么是 TCP/IP 协议?
  • 网络传输基本流程
    • 局域网(以太网为例)通信原理
      • MAC地址
      • 数据包封装和分用
    • 跨网络传输流程图
      • IP地址的意义
  • Socket 编程预备
    • 理解源 IP 地址和目的 IP 地址
    • 端口号
    • 理解socket
    • 传输层的典型代表
    • 网络字节序
    • sockadder结构

初识协议

概述

“协议” 是一种约定。

在这里插入图片描述

计算机之间的传输媒介是光信号和电信号。通过 “频率” 和 “强弱” 来表示 0 和 1 这样的
信息.。要想传递各种不同的信息, 就需要约定好双方的数据格式。

只要通信的两台主机, 约定好协议就可以了么?
定好协议, 但是你用频率表示 01, 我用强弱表示 01, 就好比我用中国话, 你用葡萄牙语一样, 虽然大家可能遵守的一套通信规则, 但是语言不同, 即是订好了基本的协议, 也是无法正常通信的

所以, 完善的协议, 需要更多更细致的规定, 并让参与的人都要遵守。

一般具有定制协议或者标准的资格的组织或者公司都必须是业界公认或者具有江湖地
位的组织或者公司, 下面是文心一言生成的标准制定组织, 大家看一下就可以。

能定制协议标准的组织或公司主要有以下几类:

  1. 国际标准化组织:
    ○ IEEE(电气和电子工程师协会) : 这是一个由计算机和工程领域专家组成的庞大技术组织, 在通信协议领域贡献突出。 IEEE 制定了全世界电子、 电气和计算机科学领域 30%左右的标准, 包括 IEEE 802 系列标准, 这些标准涵盖了从局域网(LAN) 到广域网(WAN) 等多种网络技术。
    ○ ISO(国际标准化组织) : ISO 是由多个国家的标准化团体组成的国际组织, 它在开放系统互连(OSI) 模型方面的工作尤为著名。 OSI 模型定义了网络通信的七层协议结构, 尽管在实际应用中, TCP/IP 协议族更为普遍, 但 OSI 模型仍然在学术和理论研究中占有重要地位。
    ○ ITU(国际电信联盟) : ITU 是联合国下属的专门机构, 负责制定电信领域的国际标准。 ITU-T 制定的标准涵盖了电话和网络通信, 与 ISO 合作确保了通信
    技术的全球兼容性和互操作性。

  2. 区域标准化组织:
    ○ ETSI(欧洲电信标准学会) : 由欧洲共同体各国政府资助, 是一个由电信
    行业的厂商与研究机构参加并从事研究开发到标准制定的组织。
    ○ ASTAP(亚洲与泛太平洋电信标准化协会) : 1998 年由日本与韩国发起成
    立的标准化组织, 旨在加强亚洲与太平洋地区各国信息通信基础设施及其相互连
    接的标准化工作的协作。

  3. 公司:
    ○ 某些公司, 如泰凌微, 也自研各种标准的软件协议栈, 包括低功耗蓝牙、zigbee、 thread 及 Matter 等, 并可进行定制化改动, 这是其核心竞争力之一。 泰凌微还计划重点发展智能电子价签、 智能遥控、 智能家居等市场。

  4. 民间国际团体:
    ○ IETF(互联网工程师任务组) : 这是一个负责开发和推广互联网协议(特别
    是构成 TCP/IP 协议族的协议) 的志愿组织, 通过 RFC 发布新的或者取代老的协议标准。

  5. 官方机构:
    ○ FCC(联邦通信委员会) : 美国对通信技术的管理的官方机构, 主要职责是
    通过对无线电、 电视和有线通信的管理来保护公众利益。 也对包括标准化在内的
    通信产品技术特性进行审查和监督。

协议分层

协议本质也是软件, 在设计上为了更好的进行模块化, 解耦合, 也是被设计成为
层状结构的。

在这里插入图片描述

分层可以实现解耦合, 让软件维护的成本更低。

OSI 七层模型

  • OSI(Open System Interconnection, 开放系统互连) 七层网络模型称为开放
    式系统互联参考模型, 是一个逻辑上的定义和规范
  • 把网络从逻辑上分为了 7 层. 每一层都有相关、 相对应的物理设备, 比如路由
    器, 交换机;
  • OSI 七层模型是一种框架性的设计方法, 其最主要的功能使就是帮助不同类型
    的主机实现数据传输;
  • 它的最大优点是将服务、 接口和协议这三个概念明确地区分开来, 概念清楚,
    理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可
    靠的通讯;
  • 它既复杂又不实用; 所以我们按照 TCP/IP 四层来分析

在这里插入图片描述
在这里插入图片描述

TCP/IP 五层(或四层)模型

TCP/IP 是一组协议的代名词, 它还包括许多协议, 组成了 TCP/IP 协议簇.

TCP/IP 通讯协议采用了 5 层的层级结构, 每一层都呼叫它的下一层所提供的网络来完成自己的需求.

  • 物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、 早期以太网采用的的同轴电缆(现在主要用于有线电视)、 光纤, 现在的 wifi 无线网使用电磁波等都属于物理层的概念。 物理层的能力决定了最大传输速率、 传输距离、 抗干扰性等. 集线器(Hub)工作在物理层.

  • 数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、 帧同步(就是说从网线上检测到什么信号算作新帧的开始)、 冲突检测(如果检测到冲突就自动重发)、 数据差错校验等工作. 有以太网、 令牌环网, 无线 LAN 等标准. 交换机(Switch)工作在数据链路层.

  • 网络层: 负责地址管理和路由选择. 例如在 IP 协议中, 通过 IP 地址来标识一台
    主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器
    (Router)工作在网路层

  • 传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据
    可靠的从源主机发送到目标主机

  • 应用层: 负责应用程序间沟通, 如简单电子邮件传输(SMTP) 、 文件传输协
    议(FTP) 、 网络远程访问协议(Telnet) 等. 我们的网络编程主要就是针对应用层.

在这里插入图片描述

物理层我们考虑的比较少, 我们只考虑软件相关的内容. 因此很多时候我们直接称为
TCP/IP 四层模型.

再识协议

为什么要有 TCP/IP 协议?

首先, 即便是单机, 你的计算机内部, 其实都是存在协议的, 比如: 其他设备和
内存通信, 会有内存协议。 其他设备和磁盘通信, 会有磁盘相关的协议, 比如:
SATA, IDE, SCSI 等。 只不过我们感知不到罢了。 而且这些协议都在本地主机各自的硬件中, 通信的成本、 问题比较少。

其次, 网络通信最大的特点就是主机之间变远了。 任何通信特征的变化, 一定会
带来新的问题, 有问题就得解决问题, 所以需要新的协议咯。

在这里插入图片描述

TCP/IP 协议本质就是通信主机距离变远了。

什么是 TCP/IP 协议?

TCP/IP 协议的本质是一种解决方案

TCP/IP 协议能分层, 前提是因为问题们本身能分层

操作系统和TCP/IP协议的关系:
在这里插入图片描述

传输层最著名的协议就是TCP网络层最著名的协议就是IP而传输层(TCP)和网络层(IP)两层必须实现在内核中,无论OS再怎么不同,这部分大家必须遵守协议,必须一样。

TCP和IP既然是核心,把这个协议整体统称为TCP/IP。

理解TCP/IP协议:
OS 源代码一般都是用 C/C++语言写的

在这里插入图片描述

主机 B 能识别 data, 并且准确提取 a=10, b=20, c=30 吗?
可以,因为双方都有同样的结构体类型 struct protocol。 也就是说,用同样的代码实现协议, 用同样的自定义数据类型, 天然就具有”共识“, 能够识别对方发来的数据

关于协议的朴素理解: 所谓协议, 就是通信双方都认识的结构化的数据类型
因为协议栈是分层的, 所以, 每层都有双方,都有协议, 同层之间, 互相可以认识对方的协议。

举个例子:
当我们在网购时,收到的东西是你所买的东西以及一个快递单子:
在这里插入图片描述

当我们拿到东西的时候一般是把快递单子丢掉,物品留下。快递在转运的过程中,快递单子上面的字段工作人员以及你都是明白上面的意思的。这里的快递单子就相当于结构体数据。

在这里插入图片描述

网络传输基本流程

局域网(以太网为例)通信原理

两台主机在同一个局域网中是可以进行通信的,每台主机都需要有一个唯一性标识,称之为MAC地址。

比如你的手机给其他三个手机开了热点,那么这四台手机就在一个局域网中,你的手机相当于一台路由器。

举例:
教室中一群学生在上课,其中有一个叫做张三,老师上课提问:“张三…”,老师喊的是张三,其他同学不会有反应,因为喊的是张三。于是张三站起来了,回答了老师的问题。双方在进行对话中,可以认为是面对面单独对话的,但是周围也有一大堆吃瓜群众,只不过其他同学不做处理。

这里的教室对应局域网,老师对应主机A,张三对应主机B,其他同学分别是主机C、主机D…

这实际上就是局域网通信原理。

MAC地址

  • MAC 地址用来识别数据链路层中相连的节点;
  • 长度为 48 位, 及 6 个字节. 一般用 16 进制数字加上冒号的形式来表示(例如:
    08:00:27:03:fb:19)
  • 在网卡出厂时就确定了, 不能修改. mac 地址通常是唯一的(虚拟机中的 mac 地
    址不是真实的 mac 地址, 可能会冲突; 也有些网卡支持用户配置 mac 地址).

如下是我的虚拟机的MAC地址:
在这里插入图片描述

在这里插入图片描述

以太网中, 任何时刻, 只允许一台机器向网络中发送数据,如果有多台同时发送, 会发生数据干扰, 我们称之为数据碰撞,所有发送数据的主机要进行碰撞检测和碰撞避免。没有交换机的情况下, 一个以太网就是一个碰撞域。局域网通信的过程中, 主机对收到的报文确认是否是发给自己的, 是通过目标mac 地址判定。

之前我们在学习系统编程的时候知道访问公共资源就是临界资源,那么这里的局域网就是一个临界资源(以太网中, 任何时刻, 只允许一台机器向网络中发送数据)。

同一个网段内的两台主机进行发送消息的过程:

在这里插入图片描述

而其中每层都有协议, 所以当我进行进行上述传输流程的时候, 要进行封装和解包

在这里插入图片描述

在这里插入图片描述

报头部分, 就是对应协议层的结构体字段, 我们一般叫做报头,除了报头, 剩下的叫做有效载荷,故, 报文 = 报头 + 有效载荷。

网络协议的共性:

  1. 报头和有效载荷分离的问题–解包
  2. 除了应用层,每一层协议都必须解决一个问题:自己的有效载荷应该交给上层的哪一种协议?这里需要用到分用技术。

数据包封装和分用

数据封装的过程:
在这里插入图片描述


数据分用的过程:
在这里插入图片描述

跨网络传输流程图

IP 地址是在 IP 协议中, 用来标识网络中不同主机的地址,对于 IPv4 来说, IP 地址是一个 4 字节, 32 位的整数。通常也使用 “点分十进制” 的字符串表示 IP 地址, 例如192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255;

我的虚拟机IP地址:

在这里插入图片描述

跨网段的主机的数据传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或
多个路由器

在这里插入图片描述

IP地址的意义

在这里插入图片描述


结合封装与解包, 体现路由器解包和重新封装的特点:
在这里插入图片描述

用户A将数据从应用层开始向下交付,到了网络层根据目的地址发现不是发给自己局域网主机的报文,就推送给路由器。推送给路由器之前,需要先封装MAC帧。数据通过局域网转发给其他主机,其他主机不考虑。经过网卡,路由器得到数据,进行解包,此时再次向下交付封装报文,原来的MAC地址和目的MAC地址会改变,经过网卡,到达用户B,解包分用,得到数据。

网络层(IP层)向上(包括网络层)看到的所有报文都是一样的,都至少是IP报文。IP可以屏蔽底层网络的差异。

对比 IP 地址和 Mac 地址的区别:

  • 目前我们认为:IP 地址在整个路由过程中, 一直不变
  • Mac 地址一直在变
  • 目的 IP 是一种长远目标, Mac 是下一阶段目标, 目的 IP 是路径选择的重要依
    据, mac 地址是局域网转发的重要依据

网络通信的宏观流程:
在这里插入图片描述

IP 网络层存在的意义: 提供网络虚拟层, 让世界的所有网络都是 IP 网络, 屏蔽
最底层网络的差异

Socket 编程预备

理解源 IP 地址和目的 IP 地址

IP在网络中是用来标识主机的唯一性

在这里插入图片描述
数据传输到主机不是目的,数据是给用户使用的。比如: 聊天是人在聊天, 下载是人在下载, 浏览网页是人在浏览。
用户是通过启动微信或者QQ进行聊天,通过启动迅雷去下载,通过启动谷歌去浏览。通过启动本质上是通过进程,进程是用户在系统中的代表, 只要把数据给进程, 用户就相当于就拿到了数据

数据传输到主机不是目的, 而是手段。 到达主机内部, 在交给主机内的进程,才是目的

端口号

端口号(port)是传输层协议的内容

  • 端口号是一个2字节16位整数
  • 端口号标识一个进程,告诉操作系统, 当前的这个数据要交给哪一个进程来处理
  • IP 地址 + 端口号能够标识网络上的某一台主机的某一个进程
  • 一个端口号只能被一个进程占用

在这里插入图片描述

在这里插入图片描述

服务端启动的时候,就一定要和一个port关联起来。

一个进程可以绑定多个端口号,但是一个端口号不能被多个进程绑定。需要通信的进程就需要端口号,凡是需要进行网络通信的进程需要端口号。

进程 ID 属于系统概念, 技术上也具有唯一性, 确实可以用来标识唯一的一个进程, 但是这样做, 会让系统进程管理和网络强耦合, 实际设计的时候, 并没有选择这样做。

端口号划分:

  • 0 - 1023: 知名端口号, HTTP, FTP, SSH 等这些广为使用的应用层协议, 他们的端口号都是固定的
  • 1024 - 65535: 操作系统动态分配的端口号,客户端程序的端口号, 就是由操作系统从这个范围分配的

理解socket

P 地址用来标识互联网中唯一的一台主机, port 用来标识该主机上唯一的一个网络进程

IP+Port 就能表示互联网中唯一的一个进程

在这里插入图片描述

通信的时候, 本质是两个互联网进程代表人来进行通信, {srcIp,srcPort, dstIp, dstPort}这样的 4 元组就能标识互联网中唯二的两个进程,网络通信的本质, 也是进程间通信。

把 ip+port 叫做套接字 socke

传输层的典型代表

传输层是属于内核的, 那么我们要通过网络协议栈进行通信, 必定调用的是传输层提供的系统调用, 来进行的网络通信。
在这里插入图片描述

网络字节序

内存中的多字节数据相对于内存地址有大端和小端之分, 磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小端之分, 网络数据流同样有大端小端之分。
在这里插入图片描述

两个通信的主机之间的存储方式可能不一样,一个大端,一个小端,那么数据就反了。标准规定:凡是在网络通信的,必须大端,TCP/IP 协议规定,网络数据流应采用大端字节序,即低地址高字节.

发送主机通常将发送缓冲区中的数据按内存地址从低到高的顺序发出,接收主机把从网络上接到的字节依次保存在接收缓冲区中,也是按内存地址从低到高的顺序保存。网络数据流的地址应这样规定:先发出的数据是低地址,后发出的数据是高地址。如果当前发送主机是小端, 就需要先将数据转成大端; 否则就忽略, 直接发送即可。

sockadder结构

socket API 是一层抽象的网络编程接口,适用于各种底层网络协议,如 IPv4、 IPv6,以及
后面要讲的 UNIX Domain Socket. 然而, 各种网络协议的地址格式并不相同.

在这里插入图片描述

socket API 可以都用 struct sockaddr *类型表示, 在使用的时候需要强制转化成sockaddr_in; 这样的好处是程序的通用性, 可以接收 IPv4, IPv6, 以及 UNIX Domain
Socket 各种类型的 sockaddr 结构体指针做为参数。这实际上就是C++中的多态。

关于Socket套接字编程后续文章会详细讲解。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2.13寸电子墨水屏HINK-E0213+esp8266

记录好数字 2.13寸电子墨水屏HINK-E0213esp8266 声明:大部分资料来源于微雪电子http://微雪电子-官网 https://www.waveshare.net/ 前言 很久以前买的一块电子墨水屏,运气很好,这个型号HINK-E0213资料很全,而且微雪官网也有相关电路资料http://2.13inch e-Paper HAT - Waves…

java邮件发送

文章目录 前言一、开启SMTP邮箱配置二、spring-mail1.引入依赖2.yml配置3.使用二、hutool-mail1.引入hutool2.在resource下新增mail.setting3.使用总结前言 发送邮件: 目前比较简单的有两种方式实现: spring-mailhuool-mail现在看下两种方式 一、开启SMTP邮箱配置 两种方式…

mysql查询2张表连接列名一样的情况

people表: person表: SELECT * FROM person LEFT JOIN people on people.idperson.id 查询的结果id(1)和name(1)说明列名重复 SELECT person.id,person.name,people.id as pid,people.name as pname FROM person LEFT JOIN people on people.idperso…

Linux shellcheck工具

安装工具 通过linux yum源下载,可能因为yum源的问题找不到软件包,或者下载的软件包版本太旧。 ShellCheck的源代码托管在GitHub上(推荐下载方式): GitHub - koalaman/shellcheck: ShellCheck, a static analysis tool for shell scripts 对下…

10.高级存储过程技巧(10/10)

高级存储过程技巧博客大纲 引言 在现代数据库管理系统中,存储过程作为提升数据操作效率和安全性的关键工具,已被广泛应用于各种数据库操作中。存储过程是一组为了完成特定功能的SQL语句集合,这些语句在数据库中被保存、编译和优化&#xff0…

Chromium 前端window对象c++实现定义

前端中window.document window.alert()等一些列方法和对象在c对应定义如下: 1、window对象接口定义文件window.idl third_party\blink\renderer\core\frame\window.idl // https://html.spec.whatwg.org/C/#the-window-object// FIXME: explain all uses of [Cros…

【原创】java+springboot+mysql在线课程学习网设计与实现

个人主页:程序猿小小杨 个人简介:从事开发多年,Java、Php、Python、前端开发均有涉猎 博客内容:Java项目实战、项目演示、技术分享 文末有作者名片,希望和大家一起共同进步,你只管努力,剩下的交…

陪诊小程序搭建:打造便利的陪诊环境

陪诊行业作为一个新兴行业,随着老龄化的严重,在近几年中需求量日益旺盛。陪诊师为大众的就医提供了极大的便利性,在看病难、医疗资源紧张方面发挥了积极作用。 在陪诊行业的快速发展下,陪诊小程序为行业带来了便捷的模式&#xf…

使用 three.js和 shader 实现一个五星红旗 飘扬得着色器

使用 three.js和 shader 实现一个五星红旗 飘扬得着色器 源链接:https://threehub.cn/#/codeMirror?navigationThreeJS&classifyshader&idchinaFlag 国内站点预览:http://threehub.cn github地址: https://github.com/z2586300277/three-ce…

数学建模算法与应用 第6章 微分方程建模及其求解方法

目录 6.1 微分方程建模概述 6.2 发射卫星与三阶火箭建模 Matlab代码示例:火箭发射模拟 6.3 微分方程数值解法 Matlab代码示例:欧拉法与龙格-库塔法 6.4 放射性废料的处理 Matlab代码示例:放射性衰变 6.5 初值问题的Matlab数值求解 习…

Java项目:149 基于SSM的毕业设计管理系统

作者主页:源码空间codegym 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 毕业设计管理系统 介绍 毕业设计是本科教育的最后一个环节,整个过程包括课题拟定与审核、师生双选、开题报告、文档审核、中期检查、毕业答…

C++ 比大小

//输入两个可能有前导 0 的大整数&#xff0c;a,b请输出他们谁大谁小#include <iostream> #include <string> #include <string.h> using namespace std; #define M 100005 int main() {char a[M], b[M];char *pa, *pb;pa a;pb b;cin >> a >> …

Linux的pinctrl和gpio子系统

上一章我们编写了基于设备树的 LED 驱动&#xff0c;但是驱动的本质还是没变&#xff0c;都是配置 LED 灯所使用的 GPIO 寄存器&#xff0c;驱动开发方式中硬件初始化这一部分和裸机基本没啥区别。Linux 是一个庞大而完善的系统&#xff0c;尤其是驱动框架&#xff0c;像 GPIO …

软考《信息系统运行管理员》- 4.1信息系统软件运维概述

4.1信息系统软件运维概述 文章目录 4.1信息系统软件运维概述信息系统软件运维的概念信息系统软件的可维护性及维护类型对软件可维护性的度量可以从以下几个方面进行&#xff1a;软件维护分类&#xff1a; 信息系统软件运维的体系1.**需求驱动**2.**运维流程**3.**运维过程**4.*…

ApiPost7一键压测

首先我们需要确认apipost已登录所需测试接口的后端 这边有个一键压测功能&#xff0c;可以帮助我们未下测试工具的同学直接进行接口测试 第一步&#xff1a;修改调试参数 首先我们需要在调试中把要传的参数设计成以下格式&#xff0c;确保后续压测功能成功执行 第二步&am…

MySQL-05.DDL-图形化界面工具

一.数据库图形化界面工具介绍 datagrip是Oracle公司所提供的一款专门用于操作数据库的图形化界面工具&#xff0c;目前已经被集成在了idea中&#xff0c;可以直接通过idea进行操作而不需要下载安装datagrip。 二.在idea中使用datagrip操作数据库 1.首先创建一个空项目 2.接着…

标准Netty框架的云快充协议+桩直连协议+云快充1.5 -1.6

软件架构 1、提供云快充底层桩直连协议&#xff0c;版本为云快充1.5&#xff0c;对于没有对接过充电桩系统的开发者尤为合适&#xff1b; 2、包含&#xff1a;启动充电、结束充电、充电中实时数据获取、报文解析、Netty通讯框架、包解析工具、调试器模拟器软件等&#xff1b;…

selenium的IDE插件进行录制和回放并导出为python/java脚本(10)

Selenium IDE&#xff1a;Selenium Suite下的开源Web自动化测试工具&#xff0c;是Firefox或者chrome的一个插件&#xff0c;具有记录和回放功能&#xff0c;无需编程即可创建测试用例&#xff0c;并且可以将用例直接导出为可用的python/java等编程语言的脚本。 我们以chrome浏…

数字化装备场管理系统|DW-S301-A系统主要功能介绍

数字化装备场系统DW-S301-A以物联网技术为核心&#xff0c;通过软硬件集成建设&#xff0c;总体上实现动用管控、维护保养、故障维修、物资管理、电子履历、场区管理、态势展现等功能。 1.动用管控功能 通过应用软件与单装自动识别铭牌、车辆门禁等硬件设备联动&#xff0c;实…

进程间通信 —— 《命名管道》

文章目录 前言&#xff1a;命名管道的原理&#xff1a;代码编写&#xff1a; 前言&#xff1a; 在前面的一文&#xff0c;我们主要介绍了关于进程间的通信是如何实现的&#xff0c;以及引入了进程间通信的前提——“要让两个进程在OS中看到同一份资源”&#xff0c;而对于父子…