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

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 进程间通信方式 共享内存 //最高效的进程间通信方式 不需要把用户的东西再复制到内核 他们与内核进行绑定 共享内存&#xff1a; 1、是一块&#xff0c;内核预留的空间 2、最高效的通信方式 //避免了用户空间到内核空间的数据拷贝 IPC通信方式 ---操作流程类似的…...

【脏数据 bug 解决】ValueError: mean must have 1 elements if it is an iterable, got 3

问题描述&#xff1a; 在训练模型的过程中&#xff0c;出现 clip_image_processor 无法处理数据的问题&#xff0c;说明数据集中很可能出现了脏数据。本文使用的数据为 LAION-Aesthetics-V2-6.5plus&#xff0c;从 https://dagshub.com/DagsHub-Datasets/LAION-Aesthetics-V2-…...

【Vue3】集成 Ant Design Vue

【Vue3】集成 Ant Design Vue 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗…...

如何处理前端项目中的SEO优化:从SPA到SSR与SSG

如何处理前端项目中的SEO优化&#xff1a;从SPA到SSR与SSG 在前端开发的日常工作中&#xff0c;你可能经常会遇到这样的情况&#xff1a;辛辛苦苦写了一个功能丰富、界面炫酷的单页应用&#xff08;SPA&#xff09;&#xff0c;但上线后发现搜索引擎的表现却不尽如人意。页面内…...

【UE5】Groom毛发系统的基本使用——给小白人添加头发

目录 效果 步骤 一、准备 二、使用3DsMax制作毛发 三、在UE中给小白人安装毛发 四、修改毛发材质 效果 步骤 一、准备 1. 新建一个第三人称模板工程 2. 在项目设置中&#xff0c;勾选“支持计算蒙皮缓存” 3. 在插件面板中&#xff0c;启用“Groom”和“Alembic Gro…...

DataWorks函数

文章目录 0、MaxCompute预置的函数分类1、日期函数2、数学函数3、算术运算符4、窗口函数5、聚合函数6、字符串函数7、复杂类型函数8、加密函数9、其他函数 0、MaxCompute预置的函数分类 函数类型说明日期函数支持处理DATE、DATETIME、TIMESTAMP等日期类型数据&#xff0c;实现…...

设计模式学习优质网站分享:refactoring.guru

地址 英文版地址&#xff1a;https://refactoring.guru/design-patterns 中文版地址&#xff1a;https://refactoringguru.cn/design-patterns 介绍 这个网站是专门学习 设计模式 和 软件重构 的网站 整体来说并不花哨&#xff0c;但我觉得他最大的优点就是&#xff1a; 概…...

JVM-Java的四种引用

引用分析 无论是通过引用计数算法判断对象的引用数量&#xff0c;还是通过可达性分析算法判断对象是否可达&#xff0c;判定对象是否可被回收都与引用有关&#xff0c;Java 提供了四种强度不同的引用类型 强引用&#xff1a; 被强引用关联的对象不会被回收&#xff0c;只有所…...

探索《黑神话:悟空》品质保障的背后:ISO体系认证

《黑神话&#xff1a;悟空》横空出世 8月20日上午10点&#xff0c;国产首款大型3A游戏《黑神话&#xff1a;悟空》正式上线。游戏一经上线便吸引了无数国内外用户的关注&#xff0c;不仅仅是因为其高超的游戏制作技术&#xff0c;极高的画面精度&#xff0c;精良的的视觉和战斗…...

ArcGIS Pro 实现人口分布栅格TIFF数据的网格提取与可视化

这里在分享一个人口1km精度栅格数据&#xff0c;LandScan是由美国能源部橡树岭国家实验室&#xff08;ORNL&#xff09;提供的全球人口分布数据集&#xff0c;具有最高分辨率的全球人口分布数据&#xff0c;是全球人口数据发布的社会标准&#xff0c;是全球最为准确、可靠&…...

select的缺点;poll ;poll的缺点;epoll

1.select的缺点&#xff1a; 1.select监听的文件描述符集合是一个数组&#xff0c;有上限&#xff08;1024个&#xff09; 2.select监听的文件描述符集合在应用层&#xff0c;内核层监听事件后需要传递给用户层带来资源开销 3.select需要用户手动查找产生事件的文件…...

keli5_报错 Cannot Load Device Description问题

1原因 之前创建的keli5的项目软件版本与当前的软件版本不同 使其算法要重新选择 2解决方法 2-1 点击图中的魔术棒 2-2 在这个界面中进入 Settings选项&#xff08;ST-Link Debugger 旁边&#xff09; 2-3 点击Flash Download 选项进入图中界面 在点击天加 2-4选择fla…...

算法的学习笔记—把二叉树打印成多行(牛客JZ78)

&#x1f600;前言 在算法面试中&#xff0c;二叉树的层序遍历是一个经典的题目。而这道题的要求是进一步将二叉树的每一层结点值打印成多行&#xff0c;即同一层结点从左至右输出&#xff0c;最终结果存放到一个二维数组中返回。接下来&#xff0c;我们将通过代码实例详细解析…...

FreeRTOS 时间管理

延时函数介绍 函数 描述 vTaskDelay() 相对延时 xTaskDelayUntil() 绝对延时 相对延时&#xff1a;指每次延时都是从执行函数vTaskDelay()开始&#xff0c;直到延时指定的时间结束 绝对延时&#xff1a;指将整个任务的运行周期看成一个整体&#xff0c;适用于需要按…...

F. Valuable Cards D. Smithing Skill

D题 F题 F题&#xff1a; 因为是连续的且都要选&#xff0c;我们直接从左到右去取每个区间到不合法的情况即可&#xff0c;可以在n1的位置添加一个x来结束区间判断。因为是要乘积为x&#xff0c;那么我们只需要放x的因子进去&#xff0c;不然会超时&#xff0c;同时也可以用v…...

【电子通识】IPC-A-600中对验收标准的定义

在文章【电子通识】IPC-A-610标准对产品的四种验收条件都是什么意思&#xff1f;中我们讲到IPC-A-610标准&#xff08;电子组件的可接受性&#xff09;对于产品的四种验收条件。本文中我们同理讲一讲IPC-A-600中对验收标准的定义。 IPC-A-600文件中的多数示意图和照片同时表示每…...

MyBatis(初阶)

1.什么是MyBtis MyBatis是持久层框架&#xff0c;⽤于简化JDBC的开发。 2.准备工作 2.1 创建⼯程 数据库: 2.2 配置数据库连接字符串 以application.yml⽂件为例: 2.3 写持久层代码 Data public class UserInfo {private Integer id;private String username;private Stri…...

KDP数据平台:以实战案例验证技术领先力

本文由智领云 LeetTools 工具自动生成 申请试用&#xff1a; https://www.leettools.com/feedback/ 在当今快速发展的技术环境中&#xff0c;数据平台的选择对企业的数字化转型和业务发展至关重要。智领云开源KDP&#xff08;Kubernetes Data Platform&#xff09;在数据处理和…...

[Linux] 什么是 Shell?

一、什么是 shell ? shell在英语中的意思就是外壳&#xff0c;所以我们习惯称shell程序为壳程序。那为什么又会被叫做壳程序呢&#xff1f;那是因为shell程序是在内核上面的&#xff0c;属于操作系统的外壳部分&#xff0c;因此我们就称之为壳程序(shell)。 在 Linux 中&#…...

大模型学习应用 2:快速上手大模型基于langchain实现RAG检索应用

快速上手大模型基于langchain实现RAG检索应用 - 项目作业 目录 准备工作镜像选择算力选择安装包数据说明提示参考链接 Task1 申请 api 后&#xff0c;使用 langchain 导入大模型&#xff0c;并打印出大模型信息Task2 使用 langchian 加载数据&#xff0c;并把数据打印出来Task…...

python环境安装之后,cmd输入python回车会打开微软商店

坑爹&#xff01;python环境安装之后&#xff0c;cmd输入python回车会打开微软商店 最近发现&#xff0c;安装python环境成功之后&#xff0c;可能会出现cmd输入python验证是否安装成功老会打开微软商店&#xff01; 解决&#xff0c;打开系统环境配置&#xff0c;找到刚安装…...

USB Type-C如何取9V、12V、15V、20V电压-PD快充协议芯片ECP5701

相信大家在生活中也发现了&#xff0c;现在越来越多的设备都改用这种type-C接口的母座进行取电了。 因为欧盟决议 &#xff1a;自2024年起部分消费电子产品必须提供单一的USB-C充电接口。 那么这种type-C接口相比之前的Micro-B接口有着一个很大的优势就是可以有更高的电压&…...

Go 语言 Map 17

Go 语言提供了一个强大的 Map 结构体&#xff0c;用于存储键值对。Map 可以用来存储数据&#xff0c;快速查找和修改数据。下面是 Go 语言 Map 的使用教程。 什么是 Map&#xff1f; Map 是一个键值对的集合&#xff0c;它可以存储任意类型的键和值。Map 中的每个键都是唯一的…...

移植bash到openharmony

1.交叉工具链 下载地址&#xff1a; http://ci.openharmony.cn/workbench/cicd/dailybuild/dailylist 进入ohos-sdk-full&#xff0c;下载一个sdk版本&#xff0c;这里下载的版本是version-Master_Version-OpenHarmony_5.0.0.35-20240805_020232-ohos-sdk-full.tar.gz。 解…...

git stash详细教程

git stash详细教程 基本命令: git stash: 保存当前未提交的更改&#xff0c;并恢复到干净的工作目录。git stash list: 列出所有的 stash。git stash show: 显示最新 stash 的简要内容。git stash show -p: 显示最新 stash 的详细内容。 应用和删除: git stash apply: 应用最新…...

UDP网络攻击

UDP&#xff08;User Datagram Protocol&#xff09;作为一种无连接的网络传输协议&#xff0c;以其速度快和资源消耗小的特点&#xff0c;在多种网络服务中发挥着重要作用&#xff0c;UDP的无连接特性也使其成为DDoS攻击的优选协议。 UDP攻击概念 UDP攻击是一种网络攻击手段…...

漏洞扫描的重要性,如何做好漏洞扫描服务

随着互联网技术的飞速发展&#xff0c;网络安全问题已成为不容忽视的重大挑战。其中&#xff0c;系统漏洞威胁作为最常见且严重的安全危险之一&#xff0c;对组织和个人的信息资产构成了巨大威胁。下面我们就来了解下漏洞扫描的好处、漏洞扫描的操作方法以及如何做好网络安全。…...

unity程序简易框架

1. 框架基本结构 2. 单例模式基类模块 2.1 BaseManager.cs using System.Collections; using System.Collections.Generic; using UnityEngine;public class BaseManager<T> where T:new() {private static T instance;public static T GetInstance(){if (instance == …...

Go小技巧易错点100例(十六)

本期看点&#xff1a; 正文开始&#xff1a; 切片的长度和容量 在Go语言中&#xff0c;切片&#xff08;slice&#xff09;是一个引用类型&#xff0c;它是对底层数组的抽象表示&#xff0c;提供了动态长度的、灵活的序列类型。切片包含三个重要的属性&#xff1a;指向底层数…...

通过Golang实现中间人攻击,查看和修改https流量包

要查看和修改 HTTPS 流量包&#xff0c;需要使用一个能够执行 中间人攻击&#xff08;Man-in-the-Middle, MITM&#xff09; 的代理工具。这个工具将拦截并解密 HTTPS 流量&#xff0c;然后允许查看和修改流量包的内容&#xff0c;再将其重新加密并发送到目标服务器。 完整的 …...

进一步加强网站内容建设/网站建设优化推广

IDC评述网&#xff08;idcps.com&#xff09;03月26日报道&#xff1a;据国外域名统计机构DailyChanges公布的最新实时数据显示&#xff0c;3月24日&#xff0c;在全球增长最快的十家域名解析服务商中&#xff0c;中国仅占据三个席位。上榜的中国域名解析商分别是&#xff1a;5…...

网站建设后怎么/注册网址

1.HashSet存储字符串并遍历 * 特点&#xff1a;无序、无索引、无重复 HashSet存储字符串并遍历HashSet<String> hs new HashSet<>();hs.add("a");hs.add("b");hs.add("a");hs.add("c");hs.add("c");hs.add(&qu…...

福建建设银行网站/亚马逊seo推广

第一步&#xff1a;打开下面网址.https://mcp.microsoft.com/authenticate/validatemcp.aspx第二步&#xff1a;在出现在页面中输入相对应Code后&#xff0c;点击Submit即可Transcript ID : 945443Access Code : SR6975175转载于:https://blog.51cto.com/76287/760132...

政府网站建设简报/深圳优化怎么做搜索

在使用Java NIO时&#xff0c;会经常和ByteBuffer打交道(吐槽下&#xff0c;每次手动flip切换读写模式太不友好)。在空Buffer创建时&#xff0c;有两种方式&#xff1a;ByteBuffer.allocateDirect(capacity)ByteBuffer.allocate(capacity)那么这两种Buffer的分配又有什么不一样…...

网站怎么建立视频/百度网盘官网登陆入口

以前也想这个问题,程序还没有写如何测试呢?看下泥瓦匠如何工作的吧:工匠一:先拉一跟水平线,砌每一块砖时,都与这根水平线进行比较,使得每一块砖都保持水平;工匠二:先将一排砖砌完,然后拉一跟水平线,看看哪些砖有问题,然后进行调整.看过这则类比之后直想笑,第二个工匠真的很笨,…...

网站的界面设计怎么做/昆明seo技术培训

需求描述 本次实验需要了解到RDD编程的基础知识&#xff0c;明白RDD是Spark的核心概念&#xff0c;它是一个只读的、可分区的分布式数据集&#xff0c;这个数据集可全部或部分缓存在内存中&#xff0c;在多次计算间重用。其中包括RDD的创建、操作API、持久化和分区等。 熟悉Sp…...