问题标签 [nanomsg]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++11 - 为什么 flatbuffers 和 nng 没有副本比双副本慢
我正在使用 flatbuffers 和 nng。使用 FB 我正在创建序列化缓冲区并将其添加到 nng msg。我想消除这种 FB 到 NNG 的复制。
为了实现这一点,我编写了一个自定义分配器,如下所示。
然后将其附加到FB如下
对于双重复制的情况,我像这样使用它
我的期望是无副本会比双副本稍微好一点。但是当我进行测试时,我得到了不同的结果。
所以我想知道这种行为的原因可能是什么?
每个场景运行 20 次以获得平均时间。
zeromq - gRPC 是否支持 zeromq 或 nanomsg?
根据gRPC.io 网站,我知道 gRPC 支持 http 1.x 和 2.0,但是 zeromq 或 nanomsg 等其他“传输”呢?
cmake - nanomsg nng 库安装在哪里
我是 nanomsg 和 cmake 的新手。我使用文档安装了 nanomsg
我不确定软件包安装在哪里。我在目录中看到标题/usr/include
和cmake
目录/usr/lib64
。
由于这种混乱,我无法编译我的示例程序。任何帮助将不胜感激。
c++ - Nanomsg 具有多线程应用程序的非阻塞双向套接字
我正在使用 Nanomsg 在我的系统中使用 C++ 进行 IPC。我想创建一个后台线程来处理发送和接收的消息。我使用对范式,并使用 nn_poll 检查套接字 fd 是否可写或可读,如果可读则读取;如果可写,则从消息队列中弹出一项并发送。我的问题是我创建的背景线程使用了很多 CPU 使用率,因为 nn_poll 循环中没有睡眠,有没有办法减少 CPU 使用率但仍然像没有睡眠一样使延迟?下面是我的示例代码。谢谢。
服务器.cpp
客户端.cpp
python-asyncio - pynng:如何在 REP0 套接字上设置并继续使用多个上下文
我正在研究一个“服务器”线程,它负责处理一些“客户端”的 IO 调用。
通信是使用pynng v0.5.0完成的,服务器有自己的asyncio循环。
每个客户端通过发送第一个请求来“注册”,然后循环接收结果并发送回 READY 消息。
在服务器上,目标是将每个客户端的第一条消息视为注册请求,并创建一个专用的工作任务,该任务将循环执行 IO 工作,发送结果并等待该特定客户端的 READY 消息。
为了实现这一点,我试图利用 REP0 套接字的上下文特性。
旁注
问题:
经过几次迭代,一些 READY 消息被服务器的注册协程拦截,而不是被路由到正确的 worker 任务。
由于我无法共享代码,因此我为我的问题编写了一个复制器并将其包含在下面。
更糟糕的是,正如您在输出中看到的,一些结果消息被发送到错误的客户端 ( ERROR:root:<Worker 1>: worker/client mismatch, exiting.
)。
它看起来像一个错误,但我不完全确定我理解如何正确使用上下文,所以任何帮助将不胜感激。
环境:
- winpython-3.8.2
- pynng v0.5.0+dev (46fbbcb2),带有nng v1.3.0 (ff99ee51)
代码:
输出:
编辑(2020-04-10):将 pynng 和底层 nng.lib 更新到最新版本(主分支),仍然是同样的问题。
python - nng 到 pynng 的通信不起作用
我正在尝试制作一个通过 nng 发布图像的 c 程序服务器,以及一个通过 pynng 订阅图像的 python 客户端。
出于某种原因,我无法连接这两个部分,我不知道为什么。C/C++ 程序编译和运行良好,python 程序也是如此,但是在 C/C++ 程序上发布了一些内容,在 python 客户端上没有收到任何内容。客户端和服务器在同一台机器上运行。这是我的服务器 C/C++ 代码:
这是我的客户端python代码:
有人可以帮我理解为什么这不起作用吗?
python - nng 到 pynng 发布/订阅。客户未收到任何消息
我有以下服务器(C++):
以及以下客户端(python):
我不明白为什么没有消息到达客户端。我已经设置了主题和 recv_max_size 但仍然没有消息到达客户端。我现在在这里做错了什么?
c# - 为什么 nanomsg 会挂起?
我刚开始用 C# 进行 nnanomsg 编程。对于一个简单的客户端/服务器示例,我将从以下示例开始,其中客户端与服务器连接以获取下一个数字。目前,该示例适用于 localhost,但我将网络 IP 地址硬编码以确保其正常工作。可能会有很多客户端连接到服务器,但是这个例子比现实生活中更积极地访问服务器。
客户代码:
服务器代码:
一般来说,当有一个服务器和一个客户端时,这会很好地工作。但是,当我在同一台物理机器上启动第二个客户端时,它们会一起工作一段时间,可能进行 5 到 10 次迭代,然后其中一个客户端(通常是最近启动的那个)挂起。添加延迟(Thread.sleep(5000)
例如)稍微改善了这种情况,但它最终会在 50 次迭代后挂起。目前,客户端在显示“已发送”后立即停止。我还没有尝试从网络上的另一台物理机器启动客户端。
此外,我是否在循环中等待ReceiveImmediate()
或只是坐在 aReceive()
似乎并不重要。
我期望的是每个客户端都有机会向服务器发送请求并得到回复。确切的顺序并不重要,只要服务器最终响应客户端的请求即可。
我想了解它为什么挂起。我有最新版本的 DLL,1.1.5。
非常感谢您的每一点帮助。
go - mangos的问题——Golang包提供的nanomsg总线协议
我想用nanomsg
/nng
作为一个完全分布式的点对点多节点网络的通信基础,帮助构建拓扑发现和维护的动态能力。现在我陷入了它的 Golang 包mangos
中。
在 Python 和 pynng(它是 nanomsg 的 python 绑定)中已经完成了相同的工作,但是当我使用 Go 并通过 mangos 调用相应的方法时,它们的行为完全不同。谜题主要有三方面:
- bus-type-Socket 的 Recv() 默认情况下以阻塞模式运行,似乎不能配置为非阻塞模式。文件说:
OptionRecvDeadline 是直到下一个 Recv 超时的时间。该值是时间。持续时间。可以传递零值以指示不应应用超时。负值表示非阻塞操作。默认情况下没有超时。
我相应地尝试了一个负值,但Recv()
仍然阻塞。我还应该做什么?以及如何理解“零超时”和“非阻塞”之间的区别?
dialer
返回的 by似乎(s *socket) NewDialer(...)
在调用之后会徘徊dialer.Close()
,因为调用下一个报告时会发生错误,dialer.Dial()
它仍然是“正在使用的地址”。但是当我再次尝试Close()
时dialer
,会发生错误并报告它已经关闭。我还尝试了以下选项的不同组合,但所有尝试都失败了
当我想完全杀死拨号器,或者想在一段时间后重用“伪关闭”拨号器时,我应该怎么做?
- 总线类型的套接字
Send()
很奇怪。通常每个节点都应该定期在我的代码中发送一条消息。我从网络中关闭了一个节点(比如“Node-X”)的物理连接,使其离线一段时间,然后将其重新连接到网络。我发现 Node-X 重新连接后会立即重新发送大量消息。但我真正期望的是 Node-X 可以将这些消息发送到空中,即使它没有邻居。
我想知道是否有任何方法可以解决这些问题。我想它可能缺少一些选项或配置,但我没有弄清楚它们。
以下代码用于重现重新拨号和重新关闭错误。
和控制台输出是