使用 ZeroMQ 在接口中转发数据包

Use ZeroMQ for forwarding packets in an interface

是否可以使用 ZeroMQ 作为中间点,不同的程序可以将数据包发送到 ip:port 组合或网络接口,并让 ZeroMQ 在特定的出站连接中转发任何此类数据包?

所以基本上我不想以编程方式发送我生成的数据,而是公开一些端点供其他应用程序像往常一样无缝通信,但基本上使用 ZeroMQ 作为中间人,相应地路由流量。

Q : "... have ZeroMQ forward any such packets in a specific outbound connection?"

鉴于有一种内置方法可以避免使用 { PUB/SUB | XPUB/XSUB | REQ/REP | XREQ/XREP | ROUTER/DEALER | PUSH/PULL | RADIO/DISH | CLIENT/SERVER | ... } 库中的任何常见 ZeroMQ 高级可扩展正式通信模式原型,因此有机会使用“原始”-模式,实际上 socket-FileDescriptor 可以开始由 ZeroMQ 工具 { .poll() | .send() | .recv() }-methods.

处理

为了在您的预期用例中取得成功,但有必要仔细遵循已发布的 API 规范,因为 ZMQ_STREAM 套接字具有一些内置行为,需要反映在您的 MiTM 代理处理中(剥离前置身份、到达时添加、线程安全等)。

无论如何,虽然核心 ZMQ-RFC 文档是稳定的,但 API 文档反映了最近的变化,因为核心库仍在不断发展,因此请密切关注您实现的内容(基于当前版本)以及潜在的进一步版本演变需要注意什么 and/or 已停产的功能。

利用 zmq_socket_monitor() 功能可能会很有趣,因为在此场景中您将基于面向连接的 tcp://-传输 class。