gpt4 book ai didi

C ZeroMQ zstr_recv 挂起

转载 作者:行者123 更新时间:2023-11-30 16:57:18 26 4
gpt4 key购买 nike

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

#define PIPELINE = 10;

int server()
{
char *name = "someName";
zctx_t *ctx = zctx_new();
void *router = zsocket_new(ctx, ZMQ_ROUTER);
zsocket_set_hwm(router, PIPELINE*2);
if (0 == zsocket_connect(router, tcp://127.0.0.1:6000))
{
printf("failed to connect to router.\n");
}
printf( "sending name %s\n, name);
zstr_sendfm( router, name );
return 0;
}

这是客户端函数:

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
}

这两个程序都在同一台计算机上的两个单独的程序中运行(除了运行各自的功能之外不执行任何操作)。

事情总是这样发展的:

  1. 启动客户端函数,该函数按预期保存在“zstr_recv”
  2. 启动服务器函数,连接成功,声明已发送数据,然后退出
  3. 客户端函数继续等待,但声称尚未从服务器收到任何内容。

我在这里缺少什么?我添加了一堆错误检查,甚至在 gdb 中尝试过,但没有成功。

感谢帮助和建议。

最佳答案

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

关于C ZeroMQ zstr_recv 挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39605267/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com