从 C++ 程序流式传输数据?

Posted

技术标签:

【中文标题】从 C++ 程序流式传输数据?【英文标题】:Streaming data from C++ program? 【发布时间】:2011-07-25 23:33:16 【问题描述】:

我想从我的程序中为其他订阅者(其他程序)流式传输一些数据。这些程序可以将这些数据用作流式事件。

我想要什么?

一般是怎么做的? 是否有任何图书馆或论文指出技术和优缺点? 安全相关的想法?

即使我得到一点提示,我也会自己挖掘更多信息。

例子:

程序 A:对象 A 已更改 =======> 程序 B:报告对象 A 的更改

【问题讨论】:

您是想让这项工作也通过网络还是只在同一台机器上的进程之间工作? 【参考方案1】:

通常使用两个东西:sockets/pipes 只是您的基本字节流,message passing 有点复杂,用于并行使用和水平可扩展性。

【讨论】:

别忘了 Boost.Interprocess:boost.org/doc/libs/1_47_0/doc/html/interprocess.html【参考方案2】:

我不确定它是否有点高级,但看看 boost::asio http://www.boost.org/doc/libs/1_39_0/doc/html/boost_asio/overview/core/basics.html

【讨论】:

【参考方案3】:

我发现的最好的:

Google Protobuf Facebook 节俭

优点:

帮助建立流媒体格式 快速 易于构建

缺点:

列表项 其他顶层设计问题(带宽控制、取消)必须放在首位。

【讨论】:

【参考方案4】:

从广义上讲,这听起来像是您正在尝试执行进程间通信,也就是 IPC。

在您问题的标签中,您指的是 Windows。 This 链接提供了 Windows 中 IPC 选项的广泛列表。

您问题的标签列表也表示与平台无关。基于套接字的解决方案或基于管道的解决方案将在您可能为其开发的大量平台上成为标准。您可以直接使用套接字,也可以使用众多跨平台包装器之一,例如。 ZeroMQ 和 Boost,隐藏一些细节。

从问题中不清楚程序A和程序B是否在同一台机器上运行?如果没有,那么使用套接字是一种更好的方法。

【讨论】:

以上是关于从 C++ 程序流式传输数据?的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中连续流式传输 PCM 数据?

使用 ffmpeg 从 C++ 内存中的多个图像流式传输 RTSP

如何将我的数据从 supabase 流式传输到颤振应用程序

使用 HTTP Post 从客户端流式传输数据

从 Parse.com 流式传输音频 - 没有检索到数据?

在 AVAudioEngine 中从网络流式传输数据,这可能吗?