[zeromq-dev] zeromq-dev Digest, Vol 24, Issue 13
Luca Boccassi
luca.boccassi at gmail.com
Sat Mar 24 19:52:33 CET 2018
On 24 March 2018 16:10:41 GMT+00:00, "Georger, Joseph" <joseph.georger at stresearch.com> wrote:
>I have looked at the self test and did not see an example where frames
>were being written and a picture received. Here is what happens when I
>run the code below. As you can see, only the string comes through when
>sending frames to a picture.
>
>Testing picture to picture send/receive:
>Sending 5, topic, 3
>Received 5, topic, 3
>Testing frame to picture send/receive:
>Received 0, topic, 0
>
>#include "czmq.h"
>#include <iostream>
>
>int main(void) {
> // Create two PAIR sockets and connect over inproc
> zsock_t *output = zsock_new_pair("@inproc://zsock.test");
> assert (output);
> zsock_t *input = zsock_new_pair(">inproc://zsock.test");
> assert (input);
>
> // picture to picture test
> std::cout << "Testing picture to picture send/receive:\n";
> int num1 = 5;
> uint32_t num2 = 3;
> std::cout << "Sending " << num1 << ", topic, " << num2 << std::endl;
> zsock_send(output, "is4", num1, "topic", num2);
>
> int rnum1;
> char *rstr;
> uint32_t rnum2;
> int rc = zsock_recv(input, "is4", &rnum1, &rstr, &num2);
> assert(rc == 0);
> std::cout << "Received " << rnum1 << ", " << rstr << ", " << num2 <<
>std::endl;
> freen(rstr);
>
> // frames to picture test
> std::cout << "Testing frame to picture send/receive:\n";
> zmsg_t *msg = zmsg_new();
> assert(msg);
> rc = zmsg_addmem(msg, &num1, sizeof(num1));
> assert(rc == 0);
> rc = zmsg_addmem(msg, "topic", 5);
> assert(rc == 0);
> rc = zmsg_addmem(msg, &num2, sizeof(num2));
> assert(rc == 0);
> rc = zmsg_send(&msg, output);
> assert(rc == 0);
>
> rnum1 = 0;
> rnum2 = 0;
> rc = zsock_recv(input, "is4", &rnum1, &rstr, &num2);
> assert(rc == 0);
> std::cout << "Received " << rnum1 << ", " << rstr << ", " << num2 <<
>std::endl;
> freen(rstr);
>
> zsock_destroy(&input);
> zsock_destroy(&output);
>}
>
>Thanks,
>Joe
>
>
>
> Message: 13
> Date: Sat, 24 Mar 2018 10:11:02 +0000
> From: Luca Boccassi <luca.boccassi at gmail.com>
> To: ZeroMQ development list <zeromq-dev at lists.zeromq.org>
> Subject: Re: [zeromq-dev] zframe compatible w/zsock picture?
> Message-ID: <1521886262.14111.85.camel at gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> On Fri, 2018-03-23 at 22:25 +0000, Georger, Joseph wrote:
> > Just a quick question, I was starting to write send & receive using
> > zframes, but came across the ?picture? concept in zsock. I was
> > sending three zframes, using addmem to construct the zmsg: char *
> > topic, uint32_t length in bytes, char * for msg.
> >
> > I wrote the receiver using pictures,
> > zsock_receive(socket, ?s4s?, &sz, &topic, &payload)
> >
> > topic came through, but sz was 0. Should this in theory work, can I
> > receive a frame containing a uint32_t with the picture paradigm? Can
> > I intermix a zmsg/zframe sender with a picture receiver (and vice
>> versa)? The docs imply yes: ?The picture is a string that defines the
> > type of each frame.?
> >
> > Thanks,
> > Joe
>
> Yes, see selftest for an example:
>
>https://github.com/zeromq/czmq#zsock---high-level-socket-api-that-hides-libzmq-contexts-and-sockets
>
> --
> Kind regards,
> Luca Boccassi
> -------------- next part --------------
> A non-text attachment was scrubbed...
> Name: signature.asc
> Type: application/pgp-signature
> Size: 488 bytes
> Desc: This is a digitally signed message part
>URL:
><https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20180324/07c46638/attachment-0001.sig>
>
> ------------------------------
>
> Subject: Digest Footer
>
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org
> https://lists.zeromq.org/mailman/listinfo/zeromq-dev
>
>
> ------------------------------
>
> End of zeromq-dev Digest, Vol 24, Issue 13
> ******************************************
>
>
>_______________________________________________
>zeromq-dev mailing list
>zeromq-dev at lists.zeromq.org
>https://lists.zeromq.org/mailman/listinfo/zeromq-dev
Right, you have to use the zsock-recv/send APIs together - look at the implementation if you want to replicate it manually but note that it's not a public protocol so it's not guaranteed to stay unchanged. Those APIs are intended as a self-contained shortcut.
More information about the zeromq-dev
mailing list