Нет, вы не можете получить адрес отправителя из ZeroMq.У вас есть два варианта;добавить информацию об адресе отправителя в само сообщение (неплохой вариант, если вам разрешено изменять существующие структуры сообщений) или добавить адрес отправителя в качестве части сообщения, т. е. использовать сообщения из нескольких частей ZeroMq.
Сообщение, состоящее из нескольких частей, все равно будет доставлено целиком (все части или не все), но вы можете извлекать части по отдельности на стороне получателя, таким образом вы можете добавить или добавить адрес отправителя к любомусуществующие сообщения, фактически не касаясь их (и все равно доставляя оба адреса + сообщения как элементарную операцию).
Я не уверен, как это реализовано в привязке pyzmq, но за подробностями обращайтесь к источнику socket.pyx (в основном, используйте флаг SNDMORE в методе send (..)).
Кроме того, взгляните на ZeroMq zmq_send () Api docs (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);