IPC进程通信以及网络通信
一、IPC 进程间通信方式
共享内存 //最高效的进程间通信方式
不需要把用户的东西再复制到内核
他们与内核进行绑定

共享内存:
1、是一块,内核预留的空间
2、最高效的通信方式
//避免了用户空间到内核空间的数据拷贝
IPC通信方式 ---操作流程类似的
进程操作:
system v :共享内
这个getc()和内存进行了共享

二、操作
2.1、key值得产生

功能:
将pathname和proj_id 转换为key值
参数
- pathname 给一个路径名
- proj_id 给一个字符,最低有效8位
返回值
- 成功返回值是 key值
- 失败-1
注意
- 如果传.的话,我们必须保证是同一个目录,否则产生的key不一样。
- 所以我们一般写/,代表根目录,根目录只有一个
2.2、通过key值获取ipc对象(共享内存)
shmget(shared memory )

- 第一个参数:是第一步产生的同一个名字,是唯一键值
- 第二个参数;指定内存块的大小,申请的共享内存的大小
- 第三个参数:代表申请的标志(可以指定权限)
- 如果是第一个申请,则用IPC_CREAT
- 如果是第二个申请,则用TPC_EXCT
返回值
- 成功:返回共享内存id,一般用shmid表示
- 失败 -1
注意点
- ipcs 代表展示系统里面共享的内存块
- 进程建立关联
2.3、共享内存 绑定

- 第一个参数,是指第二步的共享内存块
- 第二个参数,本意是指要与绑定的空间
- 第三个参数,表示对权限
返回值
- 成功 返回绑定的地址
- 失败
2.4、解绑
解绑只是说他们之间的关系,不在存在了,但是开的内核空间并没有消除掉
#include <sys/ipc.h>
#include <sys/shm.h>
ps auxlgrep a.out
shared memory getint shmget(keyt key,size t size,int shmflg);
功能:
使用唯一键值key向内核提出共享内存使用申请参数:
参数
- key唯一键值
- size 要申请的共享内存大小
- shmflg 申请的共享内存访问权限,八进制表示
- 如果是第一个申请,则用IPCR如果要检测是否存在,用IPCEXC
返回值:
- 成功 返回共享内存id,一般用shmid表示
- 失败 -1;
2.5、销毁
删除只做一个,否则会有争议,因为本身就是一个地方,不需要删多次
删除对象:shmct1
int shmctl(int shmid,int cmd, struct shmid ds *buf);//ctl = control
功能:
修改共享内存属性,也可以删除指定的共享内存对象。
参数:
- shmid 要删除的共享内存对象
- cmd
- IPC RMID 删除对象的宏
- buff NULL 表示只删除对象。
返回值:
- 成功0
- 失败-1
三、进程间通信方式
3.1、基本概念
不同主机间 //网络通信
1、物理层面 有一个 信息通路
- 有线
- 无线
- 4G
- 5G
- 星链
2、软件层面(逻辑层面)也需要 一个通路
能够让其能够进行网络通信(不同主机之间)制定相同的标准(OSI 网络模型)(开放的互联模型)
IP 代表的是一个在网络中的身份证号
IP 地址:
作用 标识 网路中的一台主机

主机 -- 凡是能够进行网络通信的机
3.2、进程通信标准协议
引用模型(参考模型)

OSI模型
1、物理层
规定了物理层面的电气特性及相关机械特性
物理层面数据的传输--- 一位一位的二进制数据
2、数据链路层(物理层的电气特性对应不同的数据格式)
规定了 传输数据的格式 //帧数据 保证物理层的数据可靠
//保证传输过程可靠
3、网络层(网际层)
用于解决网络与网络之间的数据传输 //数据包
4、运输层(传输层)
传输控制层,控制传输过程,保证数据完整和可靠(保证网络与网络)
5、会话层
处理一次会话过程(用来管理)
6、表示层
规定了 传输数据的格式 和方式 //加密
7、应用层
直接获取要收发的数据
实际应用到的是 TCP /IP 模型(要知道每层的作用)
五层
- 应用层
- 传输层
- 网络层
- 数据链路层
- 物理层
4层模型
- 应用层
- 传输层
- 网络层
- 网络接口层
3.3、如何发挥作用?
每个层次中,都有自己的一套规范 --- 协议
底层协议是为了上面服务
IEEE802wifi用的就是

对网络划分
3.4、从操作系统角度出发
用户层 应用层 《--------- 程序员(应用层从传输层取数据)
内核层 传输层 //这些层次,操作系统已经实现
网络层 //tcp/ip 协议 栈(网络协议层)
数据链路层
物理层
linux里面基本上已经把上面四层写好了
IP //用来标识网络中的一台主机 ----- 通过IP可以找到对应一台主机
3.5、IP号
//用来标识主机中的某一个具体(进行网络通信)的进程
本质:32位整型数值
表示方式 :点分十进制(为了方便人类)
0~255
IP地址的组成:
网络号 + 主机号

注意点
- 网络号就是告诉我们在同一个地址。
- ip + 端口 就能够确认通信的进程//进程在网络的地址
- 主机号----表示能容纳的主机
- 全是1,广播地址
- 全是0 ,网络号(一般都是不用)
四、网络编程
4.1、Tcp协议
TCP(即传输控制协议):是一种面向连接的传输层协议,它能提供高可靠性通信(即数据无误、数据无丢失、数据无失序、数据无重复到达的通信)
*适用情况:
1.适合于对传输质量要求较高,以及传输大量数据的通信。
2:在需要可靠数据传输的场合,通常使用TCP协议3.MSN/QQ等即时通讯软件的用户登录账户管理相关的功能通常采用TcP协议
TCP协议的特点
1、面向连接
2、可靠传输
面向连接 ------ //类似打电话通话之前,必须先打通
2、可靠传输//保证数据准确可靠(tcpx协议机制,里面的功能)
3、面向字节流程
4.2、UDP协议
UDP(User Datagram Protocol)用户数据报协议,是不可靠的无连接的协议。在数据发送前,因为不需要进行连接,所以可以进行高效率的数据传输。
*适用情况:
1.发送小尺寸数据(如对DNS服务器进行IP地址查询时)2.在接收到数据,给出应答较困难的网络中使用UDP。(如:无线网络)
3.适合于广播/组播式通信中。4.MSN/Q2/skype等即时通讯软件的点对点文本通讯以及音视频通讯通常采用UDP协议5.流媒体、VOD、VoIP、IPTV等网络多媒体服务中通常采用UDP方式进行实时数据传输
UDP特点(对可靠性要求不高,效率高的)WIFI相当于
1、不可靠(只管发,不管其他)//广播
2、无连接()
3、数据报
五、编程实现
5.1、编程模型:
- c/s client server 客户端服务器 ----- 专用客户端
- b/s browser secer 浏览器服务器模型 ---- 通用客户端
- p2p peer to peer 点对点传输
- p2p 人越多速度越快
- 离得越近越快
5.2、基于UDP c/s通信模型
//client 客户端 ---- 主动的角色
socket // 1、一种特殊的文件----- 专门用于网络通信(不同主机间的进程)
//2、socket 编程接口 --- socket函数提供了一个可以访问操作系统网络功能的接口
sendto // 发数据
//server 服务器 ----- 服务器端--- 被动角色
socket
recvfrom //接收数据
.... 具体操作自己来做
5.3、socket 创建通信的一端

创建文件的一端并且返回文件的描述符返
回这一端。
区域的,可以选择协议

功能:程序向内核提出创建一个基于内存的套接字描述符
参数:
//domain --域(范围)---socket 用于什么范围的通信
domain 地址族,PF_INET =AF_INET=>互联网程序
PF_UNIX==>AF_UNIX==>单机程序
type 套接字类型:
SOCK_STREAM流式套接字 =--》TCP
SOCK_DGRAM用户数据报套接字=-->UDP
SOCK_RAW原始套接字 ===》IP
protocol 协议 ==》0 表示自动适应应用层协议。
type
反回值:
成功 返回申请的套接字id
失败-1:
1、提供可靠,双向,基于字节流
2、提供不可靠,无连接
3、0(全部写0),流报默认tcp,报就是默认udp
5.4、sendto()

参数
- 1、用于通信的socket对应的fd
- 2、表示要发送的数据所在的一块空间
- 3、表示发送的字节数
- 4、0写0,表示以默认方式发送
- 5、表示 要发送到的地址(网络地址IP +端口号)
- 6、表示dest_addr 这个参数的长度
返回值
成功:发送出去的字节的数目
失败:-1
5.5、端口号
端口号:
16位数值(unsigned short)//0~65535(65536个数)//标示一个进程
TCP和 UDP 的端口号是独立的端口号:
(1)功能
- 作用:唯一的标识一个进程
- 每一个应用程序进程有一个端口号,
- 通讯时区分数据包属于哪个应用程序进程
(2)分类
端口号一般由IANA(Internet Assigned NumbersAuthority)
1、管理众所周知端口:
1~1023(1~255之间为众所周知端口,256~1023端口通常由UNIX系统占用)知名端口号(已经分配给标准应用服务软件)如:
http协议用到的端口号 80
2、已登记端口:1024~49151
注册端口号(非标准应用服务软件的软件可以申请的端口号范围)
3、动态或私有端口://50000 以上的端口号
49152~65535 动态分配的端口号(系统动态分配给应用程序使用的)
注意
- 区分进程用端口号
- 已登记;要用的话,向组织申请一下
六、注意在编程中遇到的问题
一般不用上述的内容,我们用这个更具具体,因为那个没有IP

因为不同的主机,可能数据格式不一样,所以我们在此要求是大端模式;所以转换一下

因为我们的数据类型是32位无符号类型的,所以也需要用函数转成对应类型
相关文章:
IPC进程通信以及网络通信
一、IPC 进程间通信方式 共享内存 //最高效的进程间通信方式 不需要把用户的东西再复制到内核 他们与内核进行绑定 共享内存: 1、是一块,内核预留的空间 2、最高效的通信方式 //避免了用户空间到内核空间的数据拷贝 IPC通信方式 ---操作流程类似的…...
【脏数据 bug 解决】ValueError: mean must have 1 elements if it is an iterable, got 3
问题描述: 在训练模型的过程中,出现 clip_image_processor 无法处理数据的问题,说明数据集中很可能出现了脏数据。本文使用的数据为 LAION-Aesthetics-V2-6.5plus,从 https://dagshub.com/DagsHub-Datasets/LAION-Aesthetics-V2-…...
【Vue3】集成 Ant Design Vue
【Vue3】集成 Ant Design Vue 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗…...
如何处理前端项目中的SEO优化:从SPA到SSR与SSG
如何处理前端项目中的SEO优化:从SPA到SSR与SSG 在前端开发的日常工作中,你可能经常会遇到这样的情况:辛辛苦苦写了一个功能丰富、界面炫酷的单页应用(SPA),但上线后发现搜索引擎的表现却不尽如人意。页面内…...
【UE5】Groom毛发系统的基本使用——给小白人添加头发
目录 效果 步骤 一、准备 二、使用3DsMax制作毛发 三、在UE中给小白人安装毛发 四、修改毛发材质 效果 步骤 一、准备 1. 新建一个第三人称模板工程 2. 在项目设置中,勾选“支持计算蒙皮缓存” 3. 在插件面板中,启用“Groom”和“Alembic Gro…...
DataWorks函数
文章目录 0、MaxCompute预置的函数分类1、日期函数2、数学函数3、算术运算符4、窗口函数5、聚合函数6、字符串函数7、复杂类型函数8、加密函数9、其他函数 0、MaxCompute预置的函数分类 函数类型说明日期函数支持处理DATE、DATETIME、TIMESTAMP等日期类型数据,实现…...
设计模式学习优质网站分享:refactoring.guru
地址 英文版地址:https://refactoring.guru/design-patterns 中文版地址:https://refactoringguru.cn/design-patterns 介绍 这个网站是专门学习 设计模式 和 软件重构 的网站 整体来说并不花哨,但我觉得他最大的优点就是: 概…...
JVM-Java的四种引用
引用分析 无论是通过引用计数算法判断对象的引用数量,还是通过可达性分析算法判断对象是否可达,判定对象是否可被回收都与引用有关,Java 提供了四种强度不同的引用类型 强引用: 被强引用关联的对象不会被回收,只有所…...
探索《黑神话:悟空》品质保障的背后:ISO体系认证
《黑神话:悟空》横空出世 8月20日上午10点,国产首款大型3A游戏《黑神话:悟空》正式上线。游戏一经上线便吸引了无数国内外用户的关注,不仅仅是因为其高超的游戏制作技术,极高的画面精度,精良的的视觉和战斗…...
ArcGIS Pro 实现人口分布栅格TIFF数据的网格提取与可视化
这里在分享一个人口1km精度栅格数据,LandScan是由美国能源部橡树岭国家实验室(ORNL)提供的全球人口分布数据集,具有最高分辨率的全球人口分布数据,是全球人口数据发布的社会标准,是全球最为准确、可靠&…...
select的缺点;poll ;poll的缺点;epoll
1.select的缺点: 1.select监听的文件描述符集合是一个数组,有上限(1024个) 2.select监听的文件描述符集合在应用层,内核层监听事件后需要传递给用户层带来资源开销 3.select需要用户手动查找产生事件的文件…...
keli5_报错 Cannot Load Device Description问题
1原因 之前创建的keli5的项目软件版本与当前的软件版本不同 使其算法要重新选择 2解决方法 2-1 点击图中的魔术棒 2-2 在这个界面中进入 Settings选项(ST-Link Debugger 旁边) 2-3 点击Flash Download 选项进入图中界面 在点击天加 2-4选择fla…...
算法的学习笔记—把二叉树打印成多行(牛客JZ78)
😀前言 在算法面试中,二叉树的层序遍历是一个经典的题目。而这道题的要求是进一步将二叉树的每一层结点值打印成多行,即同一层结点从左至右输出,最终结果存放到一个二维数组中返回。接下来,我们将通过代码实例详细解析…...
FreeRTOS 时间管理
延时函数介绍 函数 描述 vTaskDelay() 相对延时 xTaskDelayUntil() 绝对延时 相对延时:指每次延时都是从执行函数vTaskDelay()开始,直到延时指定的时间结束 绝对延时:指将整个任务的运行周期看成一个整体,适用于需要按…...
F. Valuable Cards D. Smithing Skill
D题 F题 F题: 因为是连续的且都要选,我们直接从左到右去取每个区间到不合法的情况即可,可以在n1的位置添加一个x来结束区间判断。因为是要乘积为x,那么我们只需要放x的因子进去,不然会超时,同时也可以用v…...
【电子通识】IPC-A-600中对验收标准的定义
在文章【电子通识】IPC-A-610标准对产品的四种验收条件都是什么意思?中我们讲到IPC-A-610标准(电子组件的可接受性)对于产品的四种验收条件。本文中我们同理讲一讲IPC-A-600中对验收标准的定义。 IPC-A-600文件中的多数示意图和照片同时表示每…...
MyBatis(初阶)
1.什么是MyBtis MyBatis是持久层框架,⽤于简化JDBC的开发。 2.准备工作 2.1 创建⼯程 数据库: 2.2 配置数据库连接字符串 以application.yml⽂件为例: 2.3 写持久层代码 Data public class UserInfo {private Integer id;private String username;private Stri…...
KDP数据平台:以实战案例验证技术领先力
本文由智领云 LeetTools 工具自动生成 申请试用: https://www.leettools.com/feedback/ 在当今快速发展的技术环境中,数据平台的选择对企业的数字化转型和业务发展至关重要。智领云开源KDP(Kubernetes Data Platform)在数据处理和…...
[Linux] 什么是 Shell?
一、什么是 shell ? shell在英语中的意思就是外壳,所以我们习惯称shell程序为壳程序。那为什么又会被叫做壳程序呢?那是因为shell程序是在内核上面的,属于操作系统的外壳部分,因此我们就称之为壳程序(shell)。 在 Linux 中&#…...
大模型学习应用 2:快速上手大模型基于langchain实现RAG检索应用
快速上手大模型基于langchain实现RAG检索应用 - 项目作业 目录 准备工作镜像选择算力选择安装包数据说明提示参考链接 Task1 申请 api 后,使用 langchain 导入大模型,并打印出大模型信息Task2 使用 langchian 加载数据,并把数据打印出来Task…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...
ui框架-文件列表展示
ui框架-文件列表展示 介绍 UI框架的文件列表展示组件,可以展示文件夹,支持列表展示和图标展示模式。组件提供了丰富的功能和可配置选项,适用于文件管理、文件上传等场景。 功能特性 支持列表模式和网格模式的切换展示支持文件和文件夹的层…...
