【发布时间】:2016-09-21 23:13:43
【问题描述】:
我有两个简单的程序:一个客户端和一个服务器。我正在尝试使用 zstr_sendfm 和 zstr_recv 来发送和接收一个简单的字符串。粗略地说,我在 zeromq 教程中使用来自file transfer test 的代码。这是服务器功能:
#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
}
这两个程序都在同一台计算机上的两个独立程序中运行(除了运行各自的功能之外什么都不做)。
事情总是这样发展的:
- 启动客户端函数,该函数在“zstr_recv”中保持原样
- 启动服务器函数,连接成功,声称已发送数据,退出
- 客户端函数继续坐等,但声称没有从服务器收到任何东西。
我在这里缺少什么?我添加了一堆错误检查,甚至在 gdb 中尝试过,但没有成功。
感谢您的帮助和建议。
【问题讨论】: