IPC 进程间通信方式

news2024/11/27 21:04:15

IPC对象(共享内存)

共享内存:

1.是一块,内核预留的空间

2.最高效的通信方式

//避免了用户空间 到 内核空间的数据拷贝

用中间那个get函数,就可以使key与共享内存一一对应

怎么将共享内存与进程关联起来

//step1 产生key值

ftok:

功能:

将pathname 和 proj_id 转换为key值

参数:

pathname: //给一个路径名

proj_id://工程id eg:‘A’、

返回值:

成功 Key值

失败 -1

//step2 通过key获取ipc对象

功能:

使用唯一键值key向内核提出共享内存使用申请

参数:

ipcs:s:show:展示当前工作系统内的共享内存

key:唯一键值要申请的共享内存大小

size:要申请的共享内存的大小

shmflg:申请的共享内存访问权限,八进制表示

如果是第一个申请,则用IPCCREAT

如果要检测是否存在,用IPCEXC

返回值:

成功 返回共享内存id,一般用shmid表示

失败 -1

share memory attach

//step3 共享内存 绑定


网络

网络:

不同主机间的通信问题

情景:

实现网络通信

1.物理层面 有一个 信息通路

有线

无线

5G

4G

星链

2.软件层面(逻辑) 也需要 一个通路

为了解决不同体系结构的网络互联问题,制定了(OSI网络模型)

OSI七层模型(参考模型):

1.物理层

规定了物理层面的电气特性(比如1V表示高电平这类的)

及相关机械特性

物理层面数据的传输 -----一位一位二进制数据 //比特流

2.数据链路层

规定了 传输数据的格式 //帧数据

目的:就是为了保证物理层数据传输是可靠地

//控制传输过程可靠

3.网络层(网际层)

解决网络 与 网络 之间的 数据传输 //数据包

4.传输层

传输控制层,控制传输过程,保证数据完整和可靠

5.会话层

处理一次会话过程

6.表示层

规定了 传输数据的格式 和 方式 //加密

7.应用层

直接获取要收发的数据

实际使用的是TCP/IP模型

应用层

传输层

网络层

数据链路层

物理层

4层模型:

应用层

传输层

网络层

网络接口层

如何发挥作用?

每个层次中,都有一套自己的规范 ---- 协议

底层协议都是为了上层协议服务的

ARP:地址解析协议


IP地址:就是代表你这台主机的身份证

作用:标识 网络中的一台主机

主机:凡是能够进行网络通信的机器


操作系统角度:

用户层 应用层


内核层 传输层 //这些层次,操作系统已经实现

网络层 //tcp/ip 协议 栈(网络协议栈)

数据链路层

物理层

基本上内核层,操作系统都已经帮我们实现了,我们可以操作的只有应用层

IP地址 //用来标识网络中的一台主机 ---- 通过ip可以找到对应的一台主机

端口号://用来表示主机中某一个具体(进行网络通信)进程

ip+端口号 //进程在网络中的 地址

本质:

32位整形数值

表示方式:

点分十进制

0-255

IP地址的组成:

网络号 + 主机号

网络号 ----表示所处的网络

主机号 ----表示能容纳的主句

主机号全0:表示 网络号

全1:表示 广播

网络编程:

tcp/udp协议:

应用层通过socket访问传输层

tcp协议:

特点:

1.面向连接 // 类似打电话通话之前,必须先打通

2.可靠传输 // 保证数据准确可靠(实现:tcp协议机制 里面的功能)

3.面向字节流程

udp协议:对可靠性要求不高的 WIFI

特点: //广播

1.不可靠

2.无连接

3.数据报


编程实现:

编程模型:

c/s client server 客户端-服务器模型 ------ 专用客户端

b/s browser server 浏览器-服务器模型 ------ 通用客户端

p2p peer to peer 点对点传输

p2p :使用的人越多,传输的效率越好

基于udp c/s通信模型

//client ---------客户端 ----角色 ------主动的角色

socket

//1.一种特殊的文件 -----专门用于网络通信(不同主机间的进程)

//2.socket 编程接口 ---- socket函数

//提供了一个可以访问 操作系统 网络功能的接口

sendto //发数据

//server --------服务器端 -----角色 ----被动的角色

socket

recvfrom //接收数据

....

//socket 创造通信的一端

可以将socket当做一个特殊的文件。创造通信的一端并返回一个文件描述符。

domain:

type(细节)

type如果写0的话就是默认。

sendto:

ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen);

参数:

sockfd: //用于通信的socket对应的fd

buf: //表示要发送的数据所在的一块空间

len: //表示发送的字节数

flags://

dest_addr: //

addrlen: //

返回值:

成功: 发送出去的字节的数目

失败: -1

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

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

相关文章

鸿蒙内核源码分析——(自旋锁篇)

本篇说清楚自旋锁 读本篇之前建议先读系列篇 进程/线程篇. 内核中哪些地方会用到自旋锁?看图: 概述 自旋锁顾名思义,是一把自动旋转的锁,这很像厕所里的锁,进入前标记是绿色可用的,进入格子间后,手一带&#xff0c…

「黑神话:悟空」员工疯狂被挖!打工天命人急改备注……

一部国产3A大作「黑神话:悟空」横空出世,震动了全球,冲上多国销量榜首。 尤其对于中国玩家以及中国游戏市场来说,这款产品实在让大家等了太久,最让人意外的是,昔日那些喊着电子鸦片的大媒体,也话风一转&…

高级列表组件ReList

高级列表组件ReList 组件实现基于 Vue3 Element Plus Typescript,同时引用 vueUse lodash-es tailwindCss (不影响功能,可忽略) 主要基于JSX风格实现高度动态的列表渲染组件,可以通过信息配置Metas配置控制信息项展示,同时支持…

数学基础(二)

一、导数 导数计算: 偏导数: 方向导数: 梯度: 函数在某点的梯度是一个向量,它的方向余方向导数最大值取得的方向一致。其大小正好是最大的方向导数 二、微积分 面积由来: 切线: 定积分&#x…

[Linux]如何在虚拟机安装Ubuntu?(小白向)

一、我们为什么要在虚拟机中安装Ubuntu? 在虚拟机中安装系统主要是为了让一个系统与我们原本的系统隔离,不管是想运行一些不安全的软件,或者是想运行一些独特的操作系统,我们都可以选择使用虚拟机来安装和隔离这些操作系统。如果你是一位Lin…

PMP–知识卡片--工作分解结构WBS元素

WBS包含如下几种元素: (1)子项目:子项目是整个项目的一部分,它可以被相对独立地作为“项目”进行管理,可以由一个专业团队或一个分包组织负责; (2)控制账户:控…

爆款来袭!AI萌娃T台秀,单条视频千万级播放量,制作方法竟如此简单!

大家好,我是小奇,一名热衷于分享AI副业项目的普通博主。不管你是AI小白还是老手,我都能帮你轻松上手,用AI技术赚钱。想多赚点?跟我来,一起探索AI副业,实现财务自由!记得关注我哦&…

Java、python、php版的高校失物招领平台(源码、调试、LW、开题、PPT)

💕💕作者:计算机源码社 💕💕个人简介:本人 八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流&…

数据结构(11)——二叉搜索树

欢迎来到博主的专栏:数据结构 博主ID:代码小豪 文章目录 二叉搜索树二叉搜索树的声明与定义二叉搜索树的查找二叉搜索树的插入二叉搜索树的中序遍历二叉搜索树的删除 key_value型搜索二叉树 二叉搜索树 二叉搜索树也称二叉排序树,是具备以下特征的二叉树…

sourceinsigt + samba

samba服务器 yum install -y sambsystemctl start smb systemctl enable smb 注意 setenforce 0 是一个用于管理 SELinux(Security-Enhanced Linux)模式的命令。SELinux 是 Linux 内核的一种安全模块,提供了强制访问控制(MAC&am…

【密码学】密钥管理:②密钥分配

一、密钥分配的定义 密钥分配是密钥管理生命周期中最重要的部分,密钥分配方案研究的是密码系统中密钥的分发和传送问题。从本质上讲,密钥分配为通信双方建立用于信息加密、解密签名等操作的密钥,以实现保密通信或认证签名等。 (1…

埃氏筛选法求素数

埃氏筛选法求素数可以减少遍历次数,及在前期的循环中就将存在的合数打上标记,从而提高算法的时间效率。 一、算法实现 void prime_number(int n) {int flag[n];int count 0;int* primeArr;/// 默认标记所有的数都是素数memset(flag,0,sizeof(flag…

浅析打电话检测算法接打电话识别算法展示及其全套打电话检测算法源码

打手机检测算法,特别是智能边缘分析一体机中的打手机检测算法,是一种专门用于监控和分析在边缘计算设备上的手机使用行为的算法。这种算法主要利用了机器学习和计算机视觉的先进技术,通过对设备上的视频流或图像进行深入分析,以识…

“万物共生”户外沉浸式展馆光影互动设计,思特科技打造!

01      思特科技助力北京玉渊潭公园 “万物共生” 户外沉浸式展馆光影互动设计,将公园独具特色的人文景观和自然景观相结合,利用数字光影艺术,通过不同形式、不同状态来表现生命的多元化,带来震撼的沉浸式体验。    北京…

加密与安全_解密AES加密中的IV和Seed

文章目录 概述IV(Initialization Vector,初始化向量)Seed(种子) CodeseedIV 小结 概述 在AES加密中,**IV(Initialization Vector,初始化向量)和Seed(种子&am…

HoloLens 坐标系统 Coordinate systems

Hololens 和 Unity 空间坐标系统-CSDN博客文章浏览阅读79次。这意味着,在 X、Y 或 Z 轴上相距 2 个单位的物体,在混合现实中的渲染效果是相距 2 米。虽然左手坐标和右手坐标是最常见的系统,但 3D 软件中也会使用其他坐标系。例如,…

【杂乱算法】前缀和与差分

前缀和 文章目录 前缀和一维应用 二维差分一维 二维扩展1、前缀和与哈希表 一维 一个数组prefix中,第i个元素表示nums[0]至nums[i-1]的总和,那么我们就称这个prefix数组是nums数组的前缀和。 prefix [ i ] ∑ j 0 i nums [ j ] \text{prefix}[i] \s…

显示弹出式窗口的方法

文章目录 1. 概念介绍2. 使用方法3. 示例代码 我们在上一章回中介绍了Sliver综合示例相关的内容,本章回中将介绍PopupMenuButton组件.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章回中介绍的PopupMenuButton组件位于AppBar右侧&#xf…

x-cmd pkg | dua - 一个可以方便地了解给定目录的磁盘空间使用情况的工具

目录 简介用户首次快速实验指南技术特点竞品和相关项目进一步阅读 简介 dua 是 Disk Usage Analyzer 的简写,该工具可以快速查看给定目录的磁盘空间使用情况。 对于想要深入了解磁盘空间使用情况并有效管理存储的用户来说,Dua 是一个很有价值的工具。通…

项目1 物流仓库管理系统

一、项目概述 本项目旨在开发一个功能全面的物流仓库管理系统,以数字化手段优化仓库作业流程,提高管理效率。系统集成了前端用户交互界面与后端数据处理逻辑,涵盖了从用户注册登录、订单管理、货单跟踪到用户信息维护等多个核心业务模块。通…