请求-回复模式中的 ZeroMQ 只允许来自特定 ip 的请求

ZeroMQ in request-replay pattern allow request comming from specific ip only

如何在 0MQ 请求-回复模式中仅允许来自特定 IP 地址的请求。 我不想接收来自任何其他 IP 地址的请求。我只想在两个 IP 地址之间进行通信,第一个是请求者,第二个是回复者。

request.c

#include <zmq.h>
#include <string.h>
#include <stdio.h>
#include <unistd.h>

int main(void) {
    void *context = zmq_ctx_new();
    void *requester = zmq_socket(context, ZMQ_REQ);
    zmq_connect(requester, "tcp://127.0.0.1:5555");

    char buffer[10];
    printf ("Sending Hello\n");
    zmq_send(requester, "Hello", 5, 0);
    zmq_recv(requester, buffer, 10, 0);
    printf("Received: %s\n", buffer);

    zmq_close (requester);
    zmq_ctx_destroy (context);

    return 0;
}

reply.c

#include <zmq.h>
#include <string.h>
#include <stdio.h>
#include <unistd.h>
#include <assert.h>

int main(void) {
    void *context = zmq_ctx_new();
    void *responder = zmq_socket(context, ZMQ_REP);
    int rc = zmq_bind(responder, "tcp://127.0.0.1:5555");
    assert(rc == 0);

    char buffer[10];
    zmq_recv(responder, buffer, 10, 0);
    printf("Recived: %s\n", buffer);
    sleep(1);
    zmq_send(responder, "World", 5, 0);

    return 0;
}

来自评论:

From whosebug.com/questions/20336954/0mq-get-message-ip it is impossible. Do not use 0MQ and use other tool.