微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c (libzmq) 中的 zeromq 发布/订阅示例

如何解决c (libzmq) 中的 zeromq 发布/订阅示例

有人可以使用 libzmq 在 c 中向我展示 zeromq pub/sub 的“Hello World”示例。我已经完成了对 req/rep 示例的编码,它有据可查,但我找不到适合我的 pub/sub 的 hello world 示例。 这是我的代码不起作用。

pub.c

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

int main()
{
    void *context = zmq_ctx_new();
    void *publisher = zmq_socket(context,ZMQ_PUB);
    zmq_bind(publisher,"tcp://127.0.0.1:5555");

    char message[15] = "Hello World!";

    while(1)
    {
        zmq_msg_t msg;
        zmq_msg_init_size(&message,strlen(message));
        memcpy(zmq_msg_data(&msg),message,strlen(message));
        zmq_msg_send(publisher,&msg,0);
        zmq_msg_close(&msg);
    }

    zmq_close(publisher);
    zmq_ctx_destroy(context);

    return 0;
}

sub.c

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

int main()
{
    void *context = zmq_ctx_new();
    void *subscriber = zmq_socket(context,ZMQ_SUB);
    int rc = zmq_connect(subscriber,"tcp://127.0.0.1:5555");
    assert(rc == 0);
    zmq_setsockopt(subscriber,ZMQ_SUBSCRIBE,"",0);

    char message[15] = "";

    while(1)
    {
        zmq_msg_t msg;
        zmq_msg_init(&msg);
        zmq_msg_recv(subscriber,0);
        int size = zmq_msg_size(&msg);
        memcpy(message,zmq_msg_data(&msg),size);
        zmq_msg_close(&msg);
        printf("%s\n",message);
    }

    zmq_close(subscriber);
    zmq_ctx_destroy(context);

    return 0;
}

提前致谢

解决方法

最后这段代码对我有用

pub.c

isInput1

sub.c

with open('input.txt',mode='r') as inputFile,\
 open('output1.txt',mode='w') as out1File,\
 open('output2.txt',mode='w') as out2File:
lines = inputFile.readlines()
isInput1 = False
isInput2 = False
for line in lines:
    if line.startswith("out1"):
        isInput1 = True
        isInput2 = False
        continue
    elif line.startswith("out2"):
        isInput2 = True
        isInput1 = False
        continue
    if isInput1:
        out1File.write(line.replace(":"," "))
    elif isInput2:
        out2File.write(line.replace(":"," "))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。