gpt4 book ai didi

python - 识别 ZMQ 消息的来源?

转载 作者:太空狗 更新时间:2023-10-30 02:34:12 26 4
gpt4 key购买 nike

如果我在 ZeroMQ 上通过 recv() 方法收到消息(0MQ) 套接字...

data = s.recv()

...我有什么方法可以获取底层套接字的 getpeername() 的值吗?我的目标是以一种不依赖发件人提供准确信息的方式来识别消息的来源。

我正在使用 ZMQ(通过 Python)收集主机指标,从接收方的角度来看,发送方的地址是一个有用的标识符。

或者这只是个坏主意?

最佳答案

不,您无法从 ZeroMq 获取发件人的地址。您基本上有两种选择;将发件人地址信息添加到消息本身(如果允许修改现有消息结构,这不是一个坏选择)或将发件人地址添加为消息部分,即使用 ZeroMq 多部分消息。

多部分消息仍将作为一个整体传递(所有部分或根本不传递),但您可以在接收端单独提取部分,因此您可以将发件人地址附加或添加到任何现有消息中,而无需实际上触摸它们(并且仍然将地址+消息作为原子操作传递)。

我不确定这是如何在 pyzmq 绑定(bind)中实现的,但请查看 socket.pyx source有关详细信息(基本上,在 send(..) 方法中使用 SNDMORE 标志)。

另外,看看 ZeroMq zmq_send() API 文档 (3.2.2)。

在 C++ 中,它看起来像这样:

// 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);

关于python - 识别 ZMQ 消息的来源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9604966/

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