nanomsg(3): push/pull 模式

2023-11-06

在这里插入图片描述
推拉之间构建起数据的双向交互。值得注意的是,先推再拉,和先拉再推,并没有启动的先后顺序。

// pull.cpp
#include <iostream>
#include <assert.h>
#include <stdio.h>
#include <nanomsg/ipc.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#ifdef WIN32 || WIN64
#include <windows.h>
#include <time.h>
#include <thread>
#else
#include <pthread.h>
#include <sys/time.h>
#include <unistd.h>
#endif
#include <nanomsg/nn.h>
#include <nanomsg/reqrep.h>
#include <nanomsg/pubsub.h>
#include <nanomsg/pipeline.h>

const char *url = "ipc:///tmp/pipeline.ipc";

typedef struct{
    int type;
    char text[1024];
}buf_t;

int main ()
{## 标题
    buf_t *buf = NULL;
    buf = (buf_t *)malloc(sizeof(buf_t));

    int sock = nn_socket (AF_SP, NN_PULL);
    assert (sock >= 0);
    assert (nn_bind (sock, url) >= 0);
    while (1)
    {
        int bytes = nn_recv (sock, &buf, NN_MSG, 0);
        assert (bytes >= 0);
        printf ("NODE0: RECEIVED %d \"%s\"\n", buf->type, buf->text);
        nn_freemsg (buf);
    }
    return 1;
}
// push.cpp

#include <iostream>
#include <assert.h>
#include <stdio.h>
#include <nanomsg/ipc.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#ifdef WIN32 || WIN64
#include <windows.h>
#include <time.h>
#include <thread>
#else
#include <pthread.h>
#include <sys/time.h>
#include <unistd.h>
#endif
#include <nanomsg/nn.h>
#include <nanomsg/reqrep.h>
#include <nanomsg/pubsub.h>
#include <nanomsg/pipeline.h>

const char *url = "ipc:///tmp/pipeline.ipc";

typedef struct{
    int type;
    char text[1024];
}buf_t;


int main ()
{
    buf_t *buf = NULL;
    buf = (buf_t *)malloc(sizeof(buf_t));
    buf->type = 1;
    memset(buf->text,0,1024);
    memcpy(buf->text,"hello,world !",strlen("hello,world !"));

    int sz_msg = sizeof(buf_t);
    int sock = nn_socket (AF_SP, NN_PUSH);
    assert (sock >= 0);
    assert (nn_connect (sock, url) >= 0);
    printf ("NODE1: SENDING %d \"%s\"\n", buf->type,buf->text);
    int bytes = nn_send (sock, buf, sz_msg, 0);
    assert (bytes == sz_msg);
    return nn_shutdown (sock, 0);
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

nanomsg(3): push/pull 模式 的相关文章

随机推荐

  • Ubuntu20.04无法开机/左上角小横杠闪烁/升级系统内核后与显卡驱动不匹配的问题

    问题描述 今天也不知道是因为升级了系统内核还是什么原因 导致系统开机后只有左上角一个小白杠一直闪烁 百度了以下确认了是nvidia显卡驱动和linux系统内核不匹配的问题 解决方法 1 安装nvidia显卡驱动 重装CUDA 左上角有小白杠
  • 线程安全和线程同步

    1 线程安全 每次执行的结果都是不确定的 因为线程的执行顺序是不可预见的 这是java同步产生的根源 synchronized 关键字保证了多个线程对于同步块是互斥的 synchronized作为一种同步手段 解决java多线程的执行有序性
  • 15 个最重要的 Java 多线程面试题及回答

    前言 在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分 如果你想获得任何股票投资银行的前台资讯职位 那么你应该准备很多关于多线程的问题 在投资银行业务中多线程和并发是一个非常受欢迎的话题 特别是电子交易发展方面相关的 他们会
  • http://mail.163.com/help/help_spam_16.htm?ip=118.186.207.7&hostid=smtp5&time=1358341921

    0INRMumLsiQwT0xVgvYVmNCBWS7mV8LzSeLOZGHzflL3ziBSx iej3G1syAeYvPZxqagQ0P7mgdX qgnEWWuIcv4cTR6ZI5QNmqULAGtRkCtCNsphAD7cLBi
  • Flink从入门到放弃(十二)-企业实战之事件驱动型场景踩坑(一)

    需求背景 某日 小明早上10点打卡到公司 先来一杯热水润润嗓子 打开音乐播放器带上心爱的降噪耳机看看新闻 静静等待11点半吃午饭 突然消息框亮了起来 这个时候小明心想要么来需求了 要么数据就有问题了 这个时候运营A部的同学发消息过来说想要分
  • 飞思卡尔Kinetis系列单片机被锁住后,怎么解锁

    Kinetis提供了相当可靠地知识产权保护机制 人为的给芯片上锁 这个对量产后的产品是必须的 但是 用户误擦写了芯片内部security的内存部分 0x400 0x40F 从而锁住了芯片 难道芯片就要报废了么 其实有解救办法 一旦芯片被锁
  • android 电池(二):android关机充电流程、充电画面显示【转】

    本文转载自 http blog csdn net xubin341719 article details 8498580 上一篇我们讲了锂电池的充放电的流程和电池的一些特性 这一节我们重点说一下android关机充电是怎么 充电画面显示是怎
  • 没有项目经验,如何通过面试 ?

    读者提问 阿常 我是培训班出来的 没有实际项目经验 害怕面试的时候通不过 有什么招可以教教我吗 阿常回答 培训班应该有实战项目 你把它当成公司项目来实践 一个月下来也能有所收获 另外你可以去牛客网上搜集一下面经 多刷面试题 参与一些企业项目
  • wireshark过滤规则

    http blog sina com cn s blog 48a0f2740100ka71 html 1 过 滤IP 如来源IP或者目标IP等于某个IP 例子 ip src eq 192 168 1 107 or ip dst eq 192
  • 基于OpenVINO部署PaddlePadle-YOLOE模型—4.Python实现

    1 环境安装 OpenVINOTM工具套件2022 1版于2022年3月22日正式发布 与以往版本相比发生了重大革新 提供预处理API函数 ONNX前端API AUTO 设备插件 并且支持直接读入飞桨模型 在推理中中支持动态改变模型的形状
  • react好租客项目Day07-条件筛选功能实现&FilterTitle组件功能实现&房屋列表数据获取

    列表找房模块 条件筛选 目标 能够设置FilterPicker组件为受控组件 能够获取选中值 并且设置默认选中值 获取选中值 在FilterPicker组件中 添加状态value 用于获取PickerView组件的选中值 state val
  • Jina 实例秀 —— 智能聊天机器人

    Jina将开启一个全新的教程系列 实例秀 在这个系列中我们将进行Jina实际用例的教学 手把手教你把Jina用起来 在本教程中 你将创建一个基于文本到文本模型的聊天机器人 了解这个示例的每个部分是如何工作的 以及如何使用不同数据集来创建自己
  • 树莓派4B安装ROS的方法总结

    文章目录 准备 Raspberry Pi 安装ROS Ubuntu Mate安装ROS Ubuntu Server安装ROS Ubuntu Desktop安装ROS 总结 故障问题解决 sudo rosdep init rosdep upd
  • 配置acados时出现“Segmentation fault,Exception: Rendering of main.in.c failed!”报错

    问题描述 在安装acados后运行测试节点时出现错误 liangjunming XX program acados examples acados python getting started on git master o 11 49 1
  • 如何安装Chrome OS系统

    Chrome OS是由Google设计的基于Linux内核的操作系统 它源自免费软件Chromium OS 并使用Google Chrome网络浏览器作为其主要用户界面 因此 Chrome操作系统主要支持Web应用程序 谷歌于2009年7月
  • 【Linux】Shell脚本中获取命令运行的结果

    前言 写shell脚本的时候 常需要将一个命令的运行结果做为参数传递给另外一个命令 除了我们熟知的管道 和args 我们也可以通过获取命令的运行结果 1 通过反引号 command 来完成 result date echo result r
  • 象牙塔式的开发

    我向来不鼓励象牙塔式的开发模式 开发团队常年封闭在 高塔 之中 一门心思地做着魔法一样的软件 这些开发者根本不知道用户会怎样使用他们做出来的软件 你若问他们 最近一次面见用户是在什么时候 他们甚至可能都回答不上来 因为缺失强有力的证据 开发
  • HOOK框架——静态代理

    往期推荐 实战案列分析 Crakeme01 实战 AliCrackme 实战案列 AntiDebug self debugging反调试 需要相关资料的朋友 可以 加入此处即可打包获取 代理模式分为静态代理和动态代理 静态代理是编译阶段就生
  • C++学习日记1

    1 头文件 输入输出流 include
  • nanomsg(3): push/pull 模式

    推拉之间构建起数据的双向交互 值得注意的是 先推再拉 和先拉再推 并没有启动的先后顺序 pull cpp include