いいえ、ZeroMq から送信者のアドレスを取得することはできません。基本的に 2 つの選択肢があります。送信者のアドレス情報をメッセージ自体に追加するか (既存のメッセージ構造を変更できる場合は悪いオプションではありません)、送信者のアドレスをメッセージの一部として追加します。つまり、ZeroMq マルチパート メッセージを使用します。
マルチパート メッセージは全体として配信されます (すべての部分またはまったくない) が、受信側で部分を個別に抽出できるため、既存のメッセージに実際に触れることなく、送信者アドレスを追加または先頭に追加できます。 (そして、アドレスとメッセージの両方をアトミック操作として配信します)。
これが pyzmq バインディングでどのように実装されているかはわかりませんが、詳細についてはsocket.pyx ソースを確認してください (基本的に、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);