套接字通信模型

本文内容主要参考《Android图形显示系统

    套接字也就是socket,一般用于网络中两个主机之间应用进程进行通信,在同一个主机也可以使用套接字完成进程之间的通信。

    在图形显示系统中,用到套接字进行通信的地方主要有VSync信号的分发以及输入事件的分发。

    在同一个主机使用套接字不需要关联IP地址和端口,创建套接字的方法如下。

void prepareSocket() {

    int sockets[2];

    if (socketpair(AF_UNIX, SOCK_SEQPACKET, 0, sockets)) {

    }

}

调用socketpair成功后,会返回两个套接字的文件描述符,文件描述符可执行读和写操作,对其中一个文件描述符执行写操作发送数据,另一个文件描述符会收到数据,执行读操作可把数据读取出来,反过来也是可以的,因此套接字可以双向传输。

    下面继续了解套接字通信模型,如下图所示。

                                                       套接字通信模型

    进程A通过socketpair创建了一对套件字,文件描述符分别为FD0和FD1,通过Binder方式把FD0传给进程B,进程B收到的文件描述符为FD0',FD1和FD0'同样是一对具有连接的套接字。进程A向FD1写入数据,进程B可检测到FD0'有数据,执行读操作可把数据读取出来,从而实现了进程A向进程B传输数据,反过来进程B也可向进程A传输数据。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux:动态库加载、编址

目录 一、库的概念 二、动静态库的加载 2.1绝对编址与相对编址 2.1一般程序的加载 三、动态库的加载 一、库的概念 库默认就是一个磁盘级文件,所以在执行代码时,库和可执行程序都会被加载到内存中,从原理上,库函数的调用依旧…

软件测试:遇到bug怎么分析,这篇文章值得一看

为什么定位问题如此重要? 可以明确一个问题是不是真的“bug” 很多时候,我们找到了问题的原因,结果发现这根本不是bug。原因明确,误报就会降低多个系统交互,可以明确指出是哪个系统的缺陷,防止“踢皮球”&…

C--函数指针与回调函数

文章目录 定义函数指针qsort中的回调函数自实现排序的回调函数 定义 回调函数,当一个函数执行时,中途调用其他定义好的函数来帮助实现功能,再继续执行这个函数 函数指针 类型为函数的指针,如下 void func() { } int main() {…

如何让视频流媒体平台免受网络攻击

在各国,流媒体服务已越来越受到大众的欢迎。有统计表明,目前视频流已占网络整体流量的80%以上。不过如您所见,近年来,数字威胁的不断增加,也让网络攻击逐年递增。单个视频用户受到的危险,往往会危及到整个服…

【unity】【C#】游戏音乐播放和发布

今天我们来认识一下有关 unity 音乐的一些知识 我们先创建 AudioClips 文件夹,这个文件夹通常就是 unity 中存放音乐的文件夹,然后拖进音乐文件进去 这里为大家提供了两个音乐,有需要可以自取 百度网盘:https://pan.baidu.com/s…

模型训练----apex库报错IndexError: tuple index out of range

问题描述 在训练模型的过程中遇到了apex库的报错IndexError: tuple index out of range导致无法训练。在github查询后找到了解决方法 问题解决 需要修改/apex-master/apex/amp/utils.py这个文件的代码 从93行开始修改 if x in cache:cached_x cache[x]next_functions_ava…

MySQL学习笔记(三)

1、insert插入多条数据 语法:insert into t_user(字段名1,字段名2...) values(值1,值2...),(值1,值2...),(值1,值2...)...; 2、快速创建表 原理:将一个查询结果当做一张表创建,可以完成表的快速复制。表创建出来,同时表中的数据…

计算机的发展趋势

本文 我们来说计算机的发展趋势 目前来讲 计算机是朝着 巨型化 微型化 网络化 智能化发展 巨型化 指功能巨型化 是指其高速运算、大存储容量和强功能的巨型计算机。其运算能力一般在每秒百亿次以上、内存容量在几百兆字节以上。 主要用于航空航天、军事、气象、人工智能、生…

[Kubernetes[K8S]集群:master主节点初始化]:通过Calico和Coredns网络插件方式安装

文章目录 操作流程:前置:Docker和K8S安装版本匹配查看0.1:安装指定docker版本 **[1 — 7] ** [ 配置K8S主从集群前置准备操作 ]一:主节点操作 查看主机域名->编辑域名->域名配置二:安装自动填充,虚拟…

LeetCode 909 208

题目 909. 蛇梯棋 思路 完全不会!呜呜呜,看了别人的题解。二维数组之字形遍历放在一维数组里面,然后借助队列对数组进行bfs。 代码 class Solution {int n;int[] nums;public int snakesAndLadders(int[][] board) {// 暴力遍历n board.le…

深入理解图形处理器(GPU):加速人工智能和大数据计算的引擎

文章目录 1. 什么是GPU?2. GPU的工作原理3. GPU的应用领域4. GPU与CPU的比较参考与推荐 前言: 图形处理器(GPU)不再仅仅是用于图形渲染的硬件设备。如今,GPU已经成为加速人工智能、大数据计算和科学研究的关键引擎。本…

MINI2440 开发板 给他干出来了

环境是ubuntu14.04。不要问我为什么是这个版本,因为之前的ubuntu12.04 环境干不出来,你去试试就知道了!各种资源包下载不下来。 输入启动参数: 进入MINI2440:别说心里一万个开心,启动完成,输入p…

Linux开发--进程

经典五问: 1.什么是程序?什么是进程? 从是否运行进行判断: gcc xxx -o pro,磁盘中生成的pro文件,就是程序 进程是程序一次运行活动 程序是静态的概念,进程是动态的概念。 2.如何查看系统中的进程: 在l…

LeetCode-热题100:64. 最小路径和

题目描述 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 **说明:**每次只能向下或者向右移动一步。 示例 1: 输入: grid [[1,3,1],[1,5,1],[4,2,1]]…

09 - 镜像管理之:部署单点harbor

本次准备了3台机器:harbor-01、harbor-02、harbor-db,用于测试 单点模式、高可用模式 部署 harbor。 ip主机名规格操作系统说明192.168.217.136harbor-012c4gCentos7.9harbor 服务器,测试单点harbor192.168.217.135harbor-022c4gCentos7.9ha…

初始C++之缺省参数 函数重载 引用

初始C之缺省参数 函数重载 引用& 文章目录 初始C之缺省参数 函数重载 引用&一、缺省参数1.1 缺省参数的定义1.2 缺省参数的分类1.3 注意事项 二、 函数重载2.1 函数重载的定义2.2 参数个数不同2.3 参数类型不同2.4 类型顺序不同2.5 为什么C语言不支持函数重载 三、引用…

Python中的错误处理 - 使用try、except、else和finally进行解释,并附带代码示例

最近,我的经理委派我创建一个自动报告。我设计的报告非常简单。它包括一些来自数据库的数字和一些基本的数学运算。我很兴奋最终可以向公司展示我的惊人的Python技能。 我完成并交付了产品。一切都很顺利。至少,直到大约两周后。我的报告由于除以零错误…

编程新手必看,python中条件控制语句学习(13)

介绍: Python3中的条件控制主要通过if、elif和else关键字来实现,它们用于根据条件执行特定的代码块。 if语句:这是最基本的条件控制结构。如果满足某个条件(条件为True),则执行相应的代码块。在Python中&am…

蓝牙app设计(方案二) E4A (时钟 优缺点)

例程改的! 主界面 虽然上面有搜索功能,但是本人建议先自行配对在使用,这样更好用,把要使用的设备收藏一下更好找哦(这样就是橙色的了,只需要点对应蓝牙左边) 代码修改部分 原版是不停向下滚动显示,这样个人觉得不太好看,所以加了个时钟,到对应时钟周期清空(达到刷…

Java-Web过滤器

文章目录 1.基本介绍1.为什么需要过滤器?2.基本介绍3.过滤器的基本原理 2.快速入门1.文件目录2.环境配置创建maven项目,导入依赖 3.代码实现1.login.jsp2.LoginCheck.java3.ManagerFilter.java编写过滤规则4.配置web.xml告诉tomcat5.admin.jsp 3.Filter的…