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

嵌入式day31

mplayer项目问题分析:

知识短时间内可以获取到

能力的提升一定需要练习

IPC 进程间通信方式

共享内存 //最高效的进程间通信方式

共享内存:

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

2.最高效的通信方式

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

操作:

system v:共享内存

IPC对象操作通用框架:

1.key值的产生:

ftok

将pathname和proj_id 转换为key值

参数:

pathname //给一个路径名

proj_id //工程id eg:‘A’

返回值:

成功 返回key值

失败 返回-1

2.通过key获取ipc对象(共享)

shmget

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

参数:

key 唯一键值

size 要申请的共享内存大小

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

返回值:

成功 返回共享内存id

失败 返回-1

3.绑定地址空间

shmat

将指定的shmid对应的共享内存映射到本地内存

参数:

shmid 要映射的本地内存1

shmaddr 本地可用的地址,如果不确定则用NULL,表示由系统自动分配

shmflg 0, 表示读写

SHM_RDONLY 只读

返回值:

成功 返回映射的地址,一般等于shmaddr

失败 返回(void *)-1

pause

等待一个信号

4.解除绑定

shmdt

将本地内存与共享内存断开映射关系

参数:

shmaddr 要断开的映射地址

返回值:

成功 返回0

失败 返回-1

5.销毁IPC对象

shmctl

修改共享内存属性,也可以删除指定的共享内存对象

参数:

shmid 要删除的共享内存对象

cmd IPC_RMID 删除对象的宏

buff NULL 表示只删除对象

返回值:

成功 返回0

失败 返回-1

总结:

1、共享内存数据的存储方式是拷贝还是剪切?

拷贝

2、共享内存的数据如果措辞不同进程读写会怎么样?

同一操作对象,数据没有偏移情况下会覆盖

IPC对象 --- 共享内存

消息队列 信号量集

网络通信

网络: 不同主机间的通信问题

实现网络通信:

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

有线

无线 5G 4G 星链

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

网络编程:

Open System Interconnect(OSI网络模型)

为了解决不同体系结构的网络的互联问题,忘记标准化组织ISO 于1981年制定了开放系统互联参考模型

Open System Interconnection Reference Model, OSI/RM

osi七层协议:
1、物理层

规定了物理层面的电气特征及相关的机械特性

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

2、数据链路层

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

//控制传输过程可靠

3、网络层(网际层)

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

4、传输层

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

5、会话层

处理一次会话过程

6、表示层

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

7、应用层

就是直接获取要收发的数据

实际应用到的是 tcp/ip 模型:

应用层

传输层

网络层

数据链路层

4层模型:

应用层

传输层

网络层

网络接口层

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

操作系体角度:

IP

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

本质:32位整型数值

表示方式 点分十进制 0 - 255

ip地址的组成:网络号 + 主机号

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

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

端口号

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

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

网络编程:

tcp / udp

TCP:

TCP(即传输控制协议):是一种面向连接的传输层协议,它能提供高可靠性通信(即数据无误、数据无丢失、数据无失序、数据无重复到达的通信)

适用情况:

1、适合于对传输质量要求较高,以及传输大量数据的通信。

2、在需要可靠数据传输的场合,通常使用TCP协议

3、MSN/QQ 等即时通讯软件的用户登录账户管理相关的功能通常采用TCP协议

TCP协议特点:

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

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

3.面向字节流

UDP:

用户数据报协议,是不可靠的无连接的协议。

在数据发送前,因为不需要进行连接,所以可以进行高效率的数据传输。

适用情况:

1、发送小尺寸数据(如对DNS服务器进行ip地址查询时)

2、在接收到数据,给出应答较困难的网络中使用UDP。(如:无线网络)

3、适合于广播 / 组播式通信中。

4、MSN/QQ/Skype 等即时通讯软件的点对点文本通讯以及音视频通讯通常采用UDP协议

5、流媒体、VOD、VOIP、IPTV等网络多媒体服务中通常采用UDP方式进行实时数据传输

UDP特点:

1.不可靠

2.无连接

3.数据报

编程

编程模型:

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

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

p2p peer to peer 点对点传输

基于UDP c/s通信模型:

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

socket

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

2.socket编程接口 --- socket函数 提供了一个可以访问 操作系统 网络功能的接口

sendto

发数据

...

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

socket
recvfrom

接收数据

...

socket

程序向内核提出创建一个基于内存的套接字描述符

sendto

man 7 ip

man inet_addr

端口号:

htons

转换大小端(网络传输统一用大端)

---------------------------------------------------

嵌入式学习第三十一天,前两天结束了mplayer项目,今天讲了进程剩下的东西,IPC进程间的通信,再学习了网络通信的相关知识,了解了OSI七层协议,进行了c/s编程。后面继续加油了。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C++ 模板进阶知识
  • Java学习Day31:HTML 第一章:观音禅院
  • 低代码开发:机遇与挑战
  • python 可迭代,迭代器,生成器,装饰器
  • SpringBoot+Echarts实现可视化图表(Thymeleaf,Vue3.0两种实现)
  • Json-类型映射使用TypeFactory或者TypeReference
  • 多视点抓取(Multi-View Grasping)
  • STM32f407 网络接收 fpga 的 bin 文件并更新到 fpga series7(3)
  • 智慧社区新视界:EasyCVR视频汇聚平台下的数字化治理实践
  • 【Solidity】合约交互基础
  • google浏览器chrome用户数据(拓展程序,书签等)丢失问题
  • 多线程(4)——单例模式、阻塞队列、线程池、定时器
  • ATGM332D-F8N低功耗、小尺寸单北斗多频定位导航模块规格书
  • 金九银十秋招大模型岗位攻略来了,已收offer,非常详细收藏我这一篇就够了
  • 你是如何克服编程学习中的挫折感的?
  • [LeetCode] Wiggle Sort
  • [笔记] php常见简单功能及函数
  • 【5+】跨webview多页面 触发事件(二)
  • IDEA 插件开发入门教程
  • Java,console输出实时的转向GUI textbox
  • JavaScript 基础知识 - 入门篇(一)
  • Meteor的表单提交:Form
  • PV统计优化设计
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • Vue.js源码(2):初探List Rendering
  • 聊聊flink的BlobWriter
  • 聊聊hikari连接池的leakDetectionThreshold
  • 盘点那些不知名却常用的 Git 操作
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 主流的CSS水平和垂直居中技术大全
  • 阿里云API、SDK和CLI应用实践方案
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​secrets --- 生成管理密码的安全随机数​
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #if 1...#endif
  • #微信小程序(布局、渲染层基础知识)
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (Oracle)SQL优化基础(三):看懂执行计划顺序
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (定时器/计数器)中断系统(详解与使用)
  • (七)c52学习之旅-中断
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (生成器)yield与(迭代器)generator
  • (四)库存超卖案例实战——优化redis分布式锁
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • .Net 4.0并行库实用性演练
  • .NET 8.0 发布到 IIS
  • .NET Core WebAPI中封装Swagger配置
  • .NET Core中Emit的使用
  • .NET 设计一套高性能的弱事件机制
  • .Net8 Blazor 尝鲜