首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏技术杂记

    进程通讯(七).socket(3

    如果用户进程没有这个需要,那么程序可以依赖内核的自动的选址机制来完成自动地址选择,而不需要调用bind的函数,同时也避免不必要的复杂度。 在一般情况下,对于服务器进程问题需要调用bind函数,对于客户进程则不需要调用bind函数 ---- listen sys/socket.h 中有关于 listen 的定义 /* Prepare to 用户在调用socket函数之后,返回一个套接字sockfd. sockfd默认一个主动连接的套接字,也就是此时系统假设用户会对这个套接字调用connect函数,期待它主动与其它进程连接,然后在服务器编程中 由于系统默认时认为一个套接字是主动连接的,所以需要通过某种方式来告诉系统,用户进程通过系统调用listen来完成这件事 listen函数可使得流套接字sockfd处于监听状态,使得一个进程可以接受其它进程的请求 ,从而成为一个服务器进程

    1.3K20发布于 2021-09-15
  • 来自专栏技术杂记

    进程通讯(六).semaphore and shared(3

    :为只读模式,其他为读写模式 如果成功则返回附加好的共享内存地址,如果出错,则返回-1,错误原因存于error中 Tip: fork后子进程继承已连接的共享内存地址;exec后该子进程与已连接的共享内存地址自动脱离 (detach);进程结束后,已连接的共享内存地址会自动脱离(detach) 有以下几种错误 EACCES:无权限以指定方式连接共享内存 EINVAL:无效的参数shmid或shmaddr ENOMEM unsigned long int sem_nsems; /* number of semaphores in set */ unsigned long int __unused3; IPC_STAT 2 /* Get `ipc_perm' options. */ #ifdef __USE_GNU # define IPC_INFO 3 /* time of last change by shmctl() */ #if __WORDSIZE == 32 unsigned long int __unused3;

    84410发布于 2021-09-15
  • 来自专栏c#开发者

    mqtt实现平台应用通讯

    neozhu/mqtt_tutorial   https://github.com/neozhu/mqtt_tutorial.git 问题&解决  配置emq x服务端 mqtt broker,为了与微信小程序通讯 /github.com/antvis/wx-f2    VUE中使用antv/f 初始组件的必须写在 mounted() 方法下,写其他地方也会报错 小小的总结    mqtt在多种终端之间实现实时通讯确实非常方便

    2K10发布于 2020-02-13
  • 来自专栏imba久期的杂货铺

    Electron 主进程与渲染进程通讯

    Electron 的通讯机制Electron 在运行时分为主进程和渲染器进程(渲染进程),主进程可以用NodeJS的 api,渲染进程可以用浏览器的 api两者之间需要通过 Electron 提供的 api 来通讯渲染进程首先需要在渲染进程设置一个监听器,用来监听主进程发来的消息然后主动发送一个消息给主进程// 监听器ipcRenderer.on('mainSend', (event, message) 因为我加一个通讯,就得写一遍上述内容最少的情况也是主进程和渲染进程各要写一个,最后会有大量的on、sendelectron-vue-event-manager于是解决方案出现了,electron-vue-event-manager (不同窗口之间)初始化既然每个通信都需要一个on和一个send,那其实我只需创建一次再通过不同的参数区分具体是什么通讯,不就解决了每种通讯要创建一个on和send的问题了electron-vue-event-manager 、组件通信之外,还有网络请求是需要封装的因为渲染进程是个浏览器窗口,发起网络请求也就会有域问题所以你需要先让渲染进程把请求相关的数据发给主进程,再由主进程发起网络请求,拿到数据后发回渲染进程在electron-vue-event-manager

    2.2K30编辑于 2022-11-08
  • 来自专栏杨不易呀

    React-组件通讯

    首先介绍一下组件通讯的之间的关系,如下图:图片父子通讯如果我们想在爷爷组件当中给儿子进行通讯,那么该如何进行实现呢,首先来看第一种方式就是一层一层的传递,为了方便观察这里博主就直接都定义在一个文件当中 ) } sonFn() { this.props.grandpaFunction(); }}export default App;图片然后在来看一个儿子像父组件通讯的这么一个过程 this.props.grandpaFunction('yangbuyiya', 18); }}export default App; 如上的这个栗子主要是演示了一下左边这一块的通讯 ,如下图:图片兄弟通讯兄弟之间通讯不能直接进行,需要先与父组件通讯,然后父组件在和另外一个组件进行通讯传递对应的数据到达对应的兄弟组件当中完成通讯,结构图如下:图片代码实现,App.js:import

    36220编辑于 2023-09-30
  • 来自专栏技术杂记

    进程通讯(一).pipe

    前言 UNIX/Linux 是多任务的操作系统,通过多个进程分别处理不同事务来实现,如果多个进程要进行协同工作或者争用同一个资源时,互相之间的通讯就很有必要了 进程间通信,Inter process signal ) 信号量 ( semaphore ) 消息队列 ( message queues ) 共享内存 ( shared memory ) 套接字 ( socket ) 这里分享一下我在学习进程通讯过程中的笔记和心得 pid is :10337, child process pid is 10338 this is child, pid is :10338, my father pid is 10337 pipe(3) ,这样子进程就变成了孤儿进程,孤儿进程会被init进程收养,所以父进程号就变成了1 emacs@ubuntu:~/c$ . child process pid is 10324 emacs@ubuntu:~/c$ this is child, pid is :10324, my father pid is 1 pipe(3)

    96530发布于 2021-09-16
  • 来自专栏CSharp编程大全

    C# 进程通讯

    一、进程通讯的方式 1)共享内存 包括:内存映射文件,共享内存DLL,剪切板。 2)命名管道及匿名管道 3)消息通讯 4)利用代理方法。例如SOCKET,配置文件,注册表方式。 等方式。 方法一:通讯进程通讯的方式有很多,常用的有共享内存(内存映射文件、共享内存DLL、剪切板等)、命名管道和匿名管道、发送消息等几种方法来直接完成,另外还可以通过socket口、配置文件和注册表等来间接实现进程间数据通讯任务 二、发送消息实现进程通讯前准备 下面的例子用到一个windows api 32函数 [DllImport("User32.dll", EntryPoint = "SendMessage")] private 三、发送消息实现进程通讯具体步骤 1.新建windows应用程序 (1)打开VS2008,新建一个“windows 应用程序”,主窗口为Form1,项目名称:ProcessCommunication

    2K20发布于 2021-01-13
  • 来自专栏技术杂记

    进程通讯(三).signal

    前言 UNIX/Linux 是多任务的操作系统,通过多个进程分别处理不同事务来实现,如果多个进程要进行协同工作或者争用同一个资源时,互相之间的通讯就很有必要了 进程间通信,Inter process signal ) 信号量 ( semaphore ) 消息队列 ( message queues ) 共享内存 ( shared memory ) 套接字 ( socket ) 这里分享一下我在学习进程通讯过程中的笔记和心得 下面通过一个例子,演示一下 signal 的使用方法 ---- 代码示例 要求 有A、B两个进程(父子),实现如下功能: 1.A进程运行开始3秒后,向B进程发送一个40号信号 2.B收到信号后,打印 3.B然后向A发送SIGKILL信号使A进程退出 要求:用signal实现 提示:注意信号量的选用 代码示例 #include <stdio.h> #include <signal.h> //signal (),ppid=getppid(); //获取自己的和父亲的进程号 sleep(3); //沉睡3秒 printf("A:this is child, my pid is %d , I

    1.8K10发布于 2021-09-15
  • 来自专栏达摩兵的技术空间

    页面通讯的几种方式

    前言 你经常会遇到需要标签共享信息的情况,那么本文就跟大家一起回顾下web端有哪些方式可以实现这样的需求。 =cookieUtil.get('name'); console.log(value); }, 10000); }); postMessage 参考我另一篇域的文章

    1.5K50发布于 2018-08-28
  • 来自专栏杨不易呀

    React-组件通讯-context

    在之前的通讯代码当中,发现一个问题,如果传递数据层次太深, 一层一层的传递比较麻烦, 所以 React 也提供了其它的解决方案:通过 context 上下文传递通过 Redux 传递 (相当于 Vuex

    48930编辑于 2023-09-30
  • 来自专栏鸿蒙开发笔记

    OpenHarmony内核源码分析(进程通讯篇) | 九种进程通讯方式速揽

    进程间为何要通讯 ? (3).通知事件: 一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。(4).资源共享: 多个进程之间共享同样的资源。 长这样:#define SIGHUP 1//终端挂起或者控制进程终止#define SIGINT 2//键盘中断(如break键被按下)#define SIGQUIT 3//键盘的退出键被按下 一般来说,只需用户进程提供信号处理函数,内核会想方设法调用信号处理函数,处理过程如图所示:个人把这种异步通讯过程理解为生产者(安装和发送信号)和消费者(捕捉和处理信号)两个部分,分姊妹两篇已完成3.消息队列 ,屏之类的功能是靠它实现的,分布式的代码还没研究,尚不清楚,如果有了解的请告知.后续要重点研究下应用通讯的技术实现.写在最后如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:点赞,转发,有你们的

    36120编辑于 2025-03-13
  • 来自专栏杨不易呀

    React-组件通讯-events

    组件事件通讯通过 context 我们已经能够实现组件通讯但是通过 context 我们只能实现 从上往下 传递不能实现 从下往上 传递或者 同级 之间的传递的问题经过博主前面的介绍我们知道, 子父组件之间通讯 ) 来实现组件事件通讯。 使用 events 库实现组件通讯安装 events 库npm install events创建 EventEmitter 对象:eventBus 对象监听事件:eventBus.addListener 图片父子通讯如上介绍的是兄弟之间的通讯,接下来来看一波父子之间的通讯:import React from 'react';import {EventEmitter} from 'events';const ) } appFn(name, age) { console.log(name, age); }}export default App;如果通过 events 来实现组件的通讯

    61210编辑于 2023-09-30
  • 来自专栏技术杂记

    进程通讯(七).socket(2)

    从 sin_zero[sizeof (struct sockaddr) - __SOCKADDR_COMMON_SIZE - sizeof (in_port_t) - sizeof (struct in_addr)] 中可以看出

    84510发布于 2021-09-15
  • 来自专栏技术杂记

    进程通讯(二).fifo(1)

    前言 UNIX/Linux 是多任务的操作系统,通过多个进程分别处理不同事务来实现,如果多个进程要进行协同工作或者争用同一个资源时,互相之间的通讯就很有必要了 进程间通信,Inter process communication signal ) 信号量 ( semaphore ) 消息队列 ( message queues ) 共享内存 ( shared memory ) 套接字 ( socket ) 这里分享一下我在学习进程通讯过程中的笔记和心得 ---- 概要 ---- FIFO FIFO 有时被称为命名管道 匿名管道 pipe 只能在两个相关的进程之间使用,而且这两个相关的进程还要有一个共同的创建它们的祖先进程,而通过 FIFO 不相关的进程也能交换数据 *__path, __mode_t __mode) __THROW __nonnull ((1)); 下面通过一个例子,演示一下 FIFO 的使用方法 ---- 代码示例 要求 有A、B两个进程 (非亲缘),实现如下功能: 1.A进程将字符串如“12345”发送给B进程 2.B进程收到后显示为“54321”,并将首尾两个字符去掉后,反传给A进程 3.A进程收到后显示为“432” 要求:用fifo

    75010发布于 2021-09-16
  • 来自专栏网络收集

    通过dll的跨进程通讯

    data_seg() #pragma comment(linker, "/section:SharedMemory,RWS") 如上所示,在dll中定义了一个名叫”SharedMemory”的共享数据段,它在所有进程中都是唯一的 当第一个进程调用它时,里面的变量会被初始化,从此之后,无论有多少进程调用,shared_data变量对应的都是同一块内存,这就意味着多个进程可以对同一个变量进行读写 当最后一个进程退出时,这块共享内存才会被回收 ,并在下一次调用时重新初始化 因此我们可以通过多个进程调用同一个dll来实现进程通讯 #pragma data_seg("SharedMemory") int shared_data = -1;

    85340编辑于 2022-03-27
  • 来自专栏技术杂记

    进程通讯(二).fifo(2)

    1 /* Operation not permitted */ #define ENOENT 2 /* No such file or directory */ #define ESRCH 3

    78520发布于 2021-09-16
  • 来自专栏技术杂记

    进程通讯(七).socket(1)

    前言 UNIX/Linux 是多任务的操作系统,通过多个进程分别处理不同事务来实现,如果多个进程要进行协同工作或者争用同一个资源时,互相之间的通讯就很有必要了 进程间通信,Inter process communication signal ) 信号量 ( semaphore ) 消息队列 ( message queues ) 共享内存 ( shared memory ) 套接字 ( socket ) 这里分享一下我在学习进程通讯过程中的笔记和心得 但是要实现不同计算机(通过网络相连)上的进程互相通信,就需要网络进程间通信(network IPC) 套接字允许进程与不同计算机上的以及同一计算机上的其它进程通信 网络上的两个程序通过一个双向的通信连接实现数据的交换 sfd=0,res=-1,recvbytes=0,sendbytes=0; char buf[BUF_SIZE],buf2[5]={0}; //进行变量的定义和初始化 if(argc < 3) //如果参数小于3个就报错,命令后面会分别加上IP地址和消息内容,所以一共是三个参数 { printf("error number of argc:%d\n",argc); return

    88820发布于 2021-09-15
  • 来自专栏技术杂记

    进程通讯(五).message queue(2)

    ,消息将依旧保留在内核中,直到重启系统,消息的持久性,界于进程与磁盘之间 { perror("msgctl"); return res; } res=0; return IPC_STAT 2 /* Get `ipc_perm' options. */ #ifdef __USE_GNU # define IPC_INFO 3 如果不指定这个参数,那么进程将被阻塞直到函数可以从队列中得到符合条件的消息为止。如果一个client 正在等待消息的时候队列被删除,EIDRM 就会被返回。 如果进程在阻塞等待过程中收到了系统的中断信号,EINTR 就会被返回。MSG_NOERROR,如果函数取得的消息长度大于msgsz,将只返回msgsz 长度的信息,剩下的部分被丢弃了。 endif __time_t msg_ctime; /* time of last change */ #if __WORDSIZE == 32 unsigned long int __unused3;

    1K20发布于 2021-09-15
  • 来自专栏技术杂记

    进程通讯(六).semaphore and shared(1)

    前言 UNIX/Linux 是多任务的操作系统,通过多个进程分别处理不同事务来实现,如果多个进程要进行协同工作或者争用同一个资源时,互相之间的通讯就很有必要了 进程间通信,Inter process communication signal ) 信号量 ( semaphore ) 消息队列 ( message queues ) 共享内存 ( shared memory ) 套接字 ( socket ) 这里分享一下我在学习进程通讯过程中的笔记和心得 1.测试控制该资源的信号量 2.若此信号量的值为正,则进程可以使用该资源,在这种情况下,进程会将信号量值减1,表示它使用了一个资源单位 3.否则,若此信号量的值为0,则进程进入休眠状态,直至信号量大于 而如果某个进程向共享内存写入数据,所做的改动将立即影响到可以访问同一段共享内存的任何其他进程。 Tip: 引自 《Linux进程间通信——使用共享内存》 共享存储允许两个或多个进程共享一个给定的存储区,因为数据不需要在客户进程和服务进程之间复制,所以这是最快的一种IPC,使用共享存储时要掌握的唯一窍门是

    95020发布于 2021-09-15
  • 来自专栏CNCF

    基于隧道的Kubernetes集群通讯

    为了解决集群服务调用的问题,我们试验了一种基于隧道的方案,下面就让我们一起来体验一下吧。 作者:鲍盈海, 中国移动云能力中心软件开发工程师,专注于云原生领域。 3. 我们还创建了一个tunnel-service的svc,这是一个没有selector的服务,目的是方便集群A中的服务来访问隧道。 但是目前这种方案还不适合在生产环境中使用,因为一般情况下集群之间因为安全、性能、成本等因素多个服务会复用一条隧道,而上面的方案中,一个服务独占了一条隧道,如果有多个demo-service服务则需要创建多个隧道 compressed curl 'http://[集群B中宿主机IP]:31080/albums' \ -H 'X-Proxy-Condition: 8051' \ --compressed 3. 实际在业界还有例如Submariner(https://submariner.io/)等开源项目能轻松提供集群的安全应用访问,大家可以进一步学习了解。

    2.3K31编辑于 2023-02-12
领券