gpt4 book ai didi

zeromq - 有没有办法知道 ZeroMQ 消息来自哪里?

转载 作者:行者123 更新时间:2023-12-02 05:27:19 29 4
gpt4 key购买 nike

我有一个 ZeroMQ 套接字,它正在从不同机器上的多个进程接收数据。在不改变数据内容的情况下,有没有办法识别数据的来源呢?具体来说,我想要发送者的 IP 地址(如果它来自 TCP 连接)。

最佳答案

不,无法从 ZeroMq 套接字获取发送者 IP。该信息隐藏在 ZeroMq 的实现层中。您有多种选择来解决此问题,一种是更改正在传递的消息,只需将发送者 IP 添加到消息本身,另一种是使用多部分消息。

来自 ZeroMq zmq_send() API 文档 (3.2.2):

A ØMQ message is composed of 1 or more message parts. Each message part is an independent zmq_msg_t in its own right. ØMQ ensures atomic delivery of messages: peers shall receive either all message parts of a message or none at all. The total number of message parts is unlimited except by available memory.

多部分消息实际上是原子消息,但分为多个逻辑消息。 IE。您收到所有零件或没有零件。如果您无法修改原始消息,则可以在消息(在发送方)前面添加发送方的 IP。然后,接收方可以提取第一部分作为发送方 IP,将第二部分提取为原始的、未经修改的消息。它将作为单个消息传递,但在逻辑上分为两个离散部分。

就您而言,您可以执行以下操作:

// Send a multi-part message consisting of sender IP plus another message
zmq_msg_send (&my_ip, my_socket, ZMQ_SNDMORE);
zmq_msg_send (&my_message, my_socket, 0);

对于接收器,请参阅 zmq_msg_recv() 的文档.

关于zeromq - 有没有办法知道 ZeroMQ 消息来自哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14653937/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com