Zeromq:如何在 C++ 中访问 tcp 消息

2024-01-03

我是 ZeroMQ 的新手,正在学习 echo 客户端-服务器模式(请求-回复)的 C++ hello-world 示例。服务器看起来像:

//
// Hello World server in C++
// Binds REP socket to tcp://*:5555
// Expects "Hello" from client, replies with "World"
//
#include <zmq.hpp>
#include <string>
#include <iostream>
#include <unistd.h>

int main () {
    // Prepare our context and socket
    zmq::context_t context (1);
    zmq::socket_t socket (context, ZMQ_REP);
    socket.bind ("tcp://*:5555");

    while (true) {
        zmq::message_t request;

        // Wait for next request from client
        socket.recv (&request);
        std::cout << "Received Hello" << std::endl;

        // Do some 'work'
        sleep (1);

        // Send reply back to client
        zmq::message_t reply (5);
        memcpy ((void *) reply.data (), "World", 5);
        socket.send (reply);
    }
    return 0;
}

现在我的问题:如何访问/读取 socket.recv() 的真实数据?试:

 std::cout << request << std::endl;

导致出现错误消息:

 error: no match for ‘operator<<’ in ‘std::operator<< [with _Traits = 
 std::char_traits<char>](((std::basic_ostream<char, std::char_traits<char> >&)
 (& std::cout)), ((const char*)"Received Hello")) << request’

发送消息的客户端也是如此。我找不到显示真实消息的方法......


hello world 示例只进行了一半并输出硬编码值:

std::cout << "Received Hello" << std::endl;

打印实际响应可以按如下方式完成:

zmq::message_t reply;
socket.recv (&reply);

std::string rpl = std::string(static_cast<char*>(reply.data()), reply.size());

std::cout << rpl << std::endl;

zhelpers.hpp 中还有一些其他有用的示例。

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

Zeromq:如何在 C++ 中访问 tcp 消息 的相关文章

  • 如何使用C从http下载文件?

    最近几天我试图弄清楚如何从 URL 下载文件 这是我对套接字的第一个挑战 我用它来了解协议 所以我想在没有 cURL 库的情况下只用 C 语言来完成它 我搜索了很多 现在我可以打印页面的源代码 但我认为这与文件不同 我不必只将接收到的数据从
  • 与 MinGW 的静态和动态/共享链接

    我想从一个简单的链接用法开始来解释我的问题 假设有一个图书馆z它可以编译为共享库 libz dll D libs z shared libz dll 或静态库 libz a D libs z static libz a 让我想要链接它 然后
  • 如何使用不同的基本路径托管 Blazor WebAssembly 应用程序

    我有一个 Blazor Webassemble NET 托管应用程序 在我们托管它的服务器上 应用程序的基本路径将是mydomain com coolapp 因此 为了尝试让应用程序在服务器上正确呈现 我一直遵循本页 应用程序基本路径 部分
  • 使用管道在父级和子级之间传递整数值

    我对如何正确使用 pipeline 在两个进程之间传递整数值有点困惑 在我的程序中 我首先创建一个管道 然后分叉它 我假设我有 两个 管道 据我了解 这是我的任务 我的父母通过 for 循环检查某个操作的整数值 i 增加计数变量 并将值保存
  • 非模板函数中的尾随返回类型[重复]

    这个问题在这里已经有答案了 我见过有人使用以下语法来实现函数 auto get next gt int 代替 int get next 我理解两者 并且我知道尾随返回类型语法对于使用 decltype 的模板代码很有用 就我个人而言 我会避
  • 使用 POST 的 HttpWebRequest 的性能

    我有一个用于测试网络服务的小工具 它可以使用 POST 或 GET 调用 Web 服务 使用POST的代码是 public void PerformRequest WebRequest webRequest WebRequest Creat
  • 如何从经过身份验证的 SecurityToken 中获取声明

    我将令牌作为字符串传递到 SOAP 服务中 并验证了该令牌是否有效 我现在有一个 SecurityToken 在调试模式下我可以看到所有声明 特别是我想传递到另一个方法的 userId 声明 我似乎不知道如何获得这些索赔 现在 我解码了令牌
  • 如何在 C++ 中为指针“this”赋值

    在函数中 如何分配this一个新的价值 您可以分配对象this点于 this XY 但你不能分配直接值this this XY Error Expression is not assignable
  • 如何以编程方式删除受信任的根证书颁发机构中的证书?

    我需要能够从组织中的每台电脑中删除特定的证书 是的 我可以逐个座位 但我要到周四才能完成 而且我没有人力逐个座位 是否有使用 C 的编程方式来执行此操作 我认为你不需要编写任何 C 看看certmgr exe del http msdn m
  • 使用 STL 流时如何格式化我自己的对象?

    我想将我自己的对象输出到 STL 流 但具有自定义格式 我想出了这样的东西 但由于我之前从未使用过 locale 和 imbue 所以我不知道这是否有意义以及如何实现 MyFacet 和operator 所以我的问题是 这是否有意义以及如何
  • DateTime.ParseExact - 为什么 yy 变成 2015 而不是 1915

    为什么 NET 假定以下年份是 2015 年 而不是 1915 年 var d DateTime ParseExact 20 11 15 dd MM yy new CultureInfo en GB 我想 它会尝试接近 但其背后是否有合理的
  • 如何从 Powerpoint 2010 导出电影?

    如何使用 MS Office PIA 主互操作程序集 或其他方式以编程方式将嵌入视频从 powerpoint 2010 导出到外部文件 在演示文稿中嵌入视频是 Powerpoint 2010 中的一项新功能 我找不到解决方案 PPTX 文件
  • C# 可以为控制台应用程序部分类“程序”类吗?

    我想知道是否可以将为任何控制台应用程序创建的默认 程序 类更改为部分类 我想这样做是因为我想要更好的组织 而不是将所有方法都放在按区域分类的 1 个文件中 对我来说 将某些方法类别放在单独的文件中会更有意义 我对分部类的理解是 它是多个文件
  • main.cpp 是必需的吗?

    我试图编译一个程序cmake 我最终删除了我的main cpp文件 我刚刚将其复合到另一个包含我的项目名称的文件中 即 我刚刚将主函数剪切并粘贴到该文件中 问题是我有一个main cpp未发现错误 不确定是否在C 一个名为main cpp是
  • 如何在VS2005中使用从.bat而不是.exe启动的外部程序进行调试?

    在我的 c 项目的调试属性中 我选择了 启动外部程序 并选择了我希望将调试器附加到的程序的 exe 但是 现在我需要从 bat 文件而不是 exe 启动程序 但 VS2005 似乎不允许这样做 这可能吗 编辑 为了澄清 我需要调试从 bat
  • 在 clang 中向量化函数

    我正在尝试根据此用 clang 对以下函数进行矢量化铿锵参考 http llvm org docs Vectorizers html 它采用字节数组向量并根据以下条件应用掩码this RFC https www rfc editor org
  • 让 Windows 尝试读取文件

    我正在对 Windows 文件系统进行某种封装 当用户请求打开文件时 Windows 调用我的驱动程序来提供数据 在正常操作中 驱动程序返回缓存的文件内容 但是 在某些情况下 实际文件没有缓存 我需要从网络下载它 问题是是否有可能让 Win
  • c++ - <未解析的重载函数类型>

    在我的班级里叫Mat 我想要一个将另一个函数作为参数的函数 现在我有下面 4 个函数 但是在调用 print 时出现错误 第二行给了我一个错误 但我不明白为什么 因为第一行有效 唯一的区别是功能f不是班级成员Mat but f2是 失败的是
  • 查找数组中的多个索引

    假设我有一个像这样的数组 string fruits watermelon apple apple kiwi pear banana 是否有一个内置函数可以让我查询 apple 的所有索引 例如 fruits FindAllIndex ap
  • 如何使用 Microsoft Graph API 更新 MailboxSettings

    我想从不同的日历更新邮箱设置 如何构建可以通过 Microsoft Graph 更新 MailboxSetting 的请求 这是我的代码示例 但有例外 代码示例 User obj GraphServiceClient Users roomC

随机推荐

  • Office Communicator 状态如何工作?

    我有兴趣了解更多有关微软办公通讯器 http office microsoft com en us communicator default aspxIM 客户端 以及它如何确定您的存在 即您是否在计算机旁或不在计算机旁 任何人都可以向我指
  • 如何允许Tomcat WAR应用程序写入文件夹

    我想要我的网络应用程序作为战争部署ROOT war具有写入权限 var www html static images这样它就可以将上传和转换的图像写入该文件夹 以便 nginx 可以静态地为其提供服务 目前它不起作用并触发java nio
  • 易失性无符号整型 * const

    下面这行代码的目的是什么const关键词 volatile unsigned int const UART0DR unsigned int 0x10009000 我明白了volatile unsigned int 有点 但为什么是const
  • 如何在ag-grid中预设列过滤器

    我有一个Ionic Angular应用程序使用ag grid 我希望某些网格在加载网格时自动应用过滤器 用户无需执行任何操作 我尝试了以下方法 onGridReady params params api sizeColumnsToFit g
  • JavaScript 中的 IIFE 调用

    我见过两种使用 IIFE 的方法 我知道还有更多 function console log this call this function console log this 有什么理由使用 call this 在第一个上 惯于 在函数内产生
  • 可能的错误? xlwings 无法运行 Excel 宏? [复制]

    这个问题在这里已经有答案了 我在让 xlwings 从 Python 运行宏时遇到问题 尽管遵循 xlwings 文档中的代码 但我无法让 xlwings 执行 Excel 宏 例如 在名为 Book xlsm 的 Excel 工作簿中 i
  • 如何使用 z3py 进行增量求解

    我正在使用 Z3 求解器的 python API 来搜索优化的时间表 它工作得很好 除了有时即使对于小图也非常慢 但有时非常快 原因可能是我的调度问题的约束相当复杂 我试图加快速度 并偶然发现了一些关于增量解决方案的文章 据我了解 您可以使
  • jQuery UI Sortable -- 如何取消拖动/排序的项目上的单击事件?

    我有一个jQuery UI 可排序 http docs jquery com UI Sortable列表 可排序的项目还附加了一个单击事件 有没有办法防止拖动项目后触发单击事件 ready function my sortable sort
  • 获取 YouTube 直播 URL

    我需要一种方法来获取 YouTube 直播的 URL 最好是每种质量的 URL 即 240p 360p 到目前为止我尝试过的 使用Wireshark 不知道如何应用适当的过滤器 使用 urlsnoopers 找不到任何在 Linux 中有效
  • ngImgCrop 依赖注入在 AngularJs 中无法正常工作

    我在用ng img 作物 in angular 通过 bower install save ngImgCrop 安装它并在通过 grunt 命令运行它时注入依赖项后 出现错误 Uncaught Error injector modulerr
  • 忽略 .ackrc 中的子目录

    我想配置我的 ackrc 这样 ack 就不会在我的 test coverage 文件夹中查找 到目前为止我已经得到了这个 ignore dir coverage 这可行 但感觉不太正确 ignore dir test coverage 问
  • 将elasticsearch 2.x转储到mongodb并返回到ES 6.x

    这个问题更多的是理论问题而不是源代码 我有一个 ES 2 x 节点 其中有超过 1 2TB 的数据 我们有 40 多个索引 每个索引至少有 1 种类型 这里 ES 2 x 被用作数据库而不是搜索引擎 用于将数据转储到 ES 2 x 的源丢失
  • createInsecureRfcommSocketToServiceRecord 中频繁出现随机故障(服务发现失败)

    我正在尝试在两个 Android 设备之间建立不安全的蓝牙套接字连接 我控制两端的软件 一端用途listenUsingInsecureRfcommWithServiceRecord监听连接 另一端使用createInsecureRfcomm
  • Python:以数值方式求积分的主值

    我正在使用 python 数值求解积分 where a x 可以取任何值 正数 负数 1 1 内部或外部 eta 是一个无穷小的正量 有第二个外积分 它改变 a x 的值 I m trying to solve this using the
  • 从 iframe 内部关闭 Bootstrap 模式

    打开带有 iframe 的 Twitter Bootstrap Modal 的页面 div class modal hide fade div class modal header div div
  • 是否可以在TFS SDK中查询工作项自定义字段

    我有几个工作项包含名为 参考 ID 的自定义字段 是否可以在此自定义字段上使用 wiql 进行查询 目前我正在使用以下方法 TFS 中的 foreach 项目 形成wiql WorkItemCollection workItemCollec
  • 使用 Struts 2 输出时出现 JSON 异常错误

    当我在浏览器中执行结果时 出现 JSON 异常错误 如下所示 type Exception report message description The server encountered an internal error that p
  • 如何在flutter中将来自api的复杂json响应存储在本地数据库中?

    我想保存来自 api 的整个 json 响应 我尝试使用 SQFLITE 库来存储 但无法实现存储完整的 json 因为它需要以表格式存储 我对扑动很陌生 任何人都可以建议我如何实现这一目标 下面我附上我的示例 json 供您参考 resu
  • 从 std::string_view 派生的对象的比较在 MSVC 中不明确

    TL DR 我是否可以期望下面的代码可以在任何符合 c 17 的 c 工具链 基于当前的 c 17 提案 上进行编译 而 MSVC 未能这样做是其实现中的一个错误 include
  • Zeromq:如何在 C++ 中访问 tcp 消息

    我是 ZeroMQ 的新手 正在学习 echo 客户端 服务器模式 请求 回复 的 C hello world 示例 服务器看起来像 Hello World server in C Binds REP socket to tcp 5555