我在台式机上制作了一个简单的client-server应用程序,并在同一台PC上成功地运行了客户机和服务器。
然后我交叉编译了这个应用程序,在覆盆子上运行。当我在raspberry上运行这个应用程序时,客户端和服务器都在raspberry上运行,它运行得非常完美。我可以看到发送和接收到的信息。
现在我把PC作为服务器,raspberry作为客户端,但是我看不到接收到的消息。这是我的密码。
PC侧代码:
zctx_t *ctx = zctx_new ();
void *reader = zsocket_new (ctx, ZMQ_PULL);
int rc = zsocket_connect (reader, "tcp://PC-IP:5555");
printf("wait for a message...\n");
while(1)
{
char *message = zstr_recv (reader);
Sleep(10);
printf("Message: %s",message);
}
zctx_destroy (&ctx);覆盆子侧码:
zctx_t *ctx = zctx_new ();
void *writer = zsocket_new (ctx, ZMQ_PUSH);
int rc = zsocket_bind (writer, "tcp://PC-IP:5555");
while(1)
{
cout<<"sending................."<<endl;
zstr_send (writer, "HELLO");
}
zsocket_destroy (ctx, writer);我怎么才能让它起作用?
发布于 2016-09-27 11:22:00
服务器应该始终绑定到自己的接口(本地IP地址或用于所有IPv4接口的IPv4地址或用于IPv4和IPv6的0::0 )。
客户端应该始终连接到远程IP地址。
由于您希望您的PC是从Raspberry Pi客户端中提取消息的服务器,我认为您应该使用以下方法:
PC侧码
zctx_t *ctx = zctx_new ();
void *reader = zsocket_new (ctx, ZMQ_PULL);
int rc = zsocket_bind (reader, "tcp://PC-IP:5555");
printf("wait for a message...\n");
while(1)
{
char *message = zstr_recv (reader);
Sleep(10);
printf("Message: %s",message);
}
zctx_destroy (&ctx);覆盆子侧码
zctx_t *ctx = zctx_new ();
void *writer = zsocket_new (ctx, ZMQ_PUSH);
int rc = zsocket_connect (writer, "tcp://PC-IP:5555");
while(1)
{
cout<<"sending................."<<endl;
zstr_send (writer, "HELLO");
}
zsocket_destroy (ctx, writer);当然,您也可以运行Raspberry Pi作为推送服务器,和PC端作为拉动客户端。在这种情况下,您可以使用:
...
int rc = zsocket_connect (reader, "tcp://raspberrypi-ip:5555");
...以及:
...
int rc = zsocket_bind (writer, "tcp://raspberrypi-ip:5555");
...https://stackoverflow.com/questions/39719768
复制相似问题