C ZeroMQ zstr_recv挂起

时间:2016-09-20 23:30:24

标签: c zeromq

我有两个简单的程序:客户端和服务器。我正在尝试使用zstr_sendfm和zstr_recv来发送和接收一个简单的字符串。粗略地说,我正在使用zeromq教程中file transfer test的代码。这是服务器功能:

int client()
{
    zctx_t *ctx = zctx_new ();
    void *dealer = zsocket_new (ctx, ZMQ_DEALER);
    zsocket_bind(dealer, "tcp://*:6000")
    char *receivedName = zstr_recv( dealer );
    printf("received the following name: %s\n", receivedName);
    return 0
}

这是客户端功能:

crypto-js

这两个程序都在同一台计算机上的两个独立程序中运行(除了运行各自的功能之外什么都不做)。

以下是事情的发展方式:

  1. 启动客户端功能,该功能保留在“zstr_recv”,因为它应该
  2. 启动服务器功能,该功能已成功连接,声称已发送数据,并退出
  3. 客户端功能继续等待,但声称尚未从服务器收到任何内容。
  4. 我在这里缺少什么?我添加了一堆错误检查,甚至在gdb中尝试了这一点而没有运气。

    帮助和建议表示赞赏。

1 个答案:

答案 0 :(得分:0)

我认为你的客户端和服务器混淆了,虽然在ZeroMQ客户端和服务器没有普通套接字那么严格。通常,您将创建一个服务器,其中包含一个绑定/接收/发送的REP套接字,以及一个具有连接/发送/接收的REQ套接字的客户端。您应该首先尝试这个,然后尝试使用ROUTER作为服务器(而不是REP)和客户端的DEALER(而不是REQ)。