Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <unistd.h>
- #include <zmq.h>
- int main(void) {
- //ctx = zmq.Context()
- void *context = zmq_ctx_new ();
- //pub_sock = ctx.socket(zmq.PUB)
- void *pub_socket = zmq_socket (context, ZMQ_PUB);
- //pub_sock.rcvhwm = 0
- int hwm = 0;
- zmq_setsockopt(pub_socket, ZMQ_RCVHWM, &hwm,sizeof(int));
- //pub_sock.bind('ipc://pub') ... using tcp instead of ipc
- zmq_bind (pub_socket, "tcp://*:5560");
- //sub_sock = ctx.socket(zmq.SUB)
- void *sub_socket = zmq_socket (context, ZMQ_SUB);
- //sub_sock.sndhwm = 0
- zmq_setsockopt(sub_socket, ZMQ_SNDHWM, &hwm,sizeof(int));
- //sub_sock.connect('ipc://pub')
- zmq_connect (sub_socket, "tcp://10.82.56.195:5560");
- //for n in range(0, 10000):
- // sub_sock.setsockopt(zmq.SUBSCRIBE, '%d\x00' % n)
- // ... using binary data instead of strings
- // .. used 1024 instead of 10,000
- for (int i = 0; i < 1024; i++)
- zmq_setsockopt(sub_socket, ZMQ_SUBSCRIBE, &i, 2);
- //time.sleep(2)
- sleep(2);
- //for n in range(0, 10000): .
- for (int i = 0 ; i < 1024; i++)
- {
- //pub_sock.send_multipart(['%d\x00' % n, '%d' % n]) ... not using multipart messages
- unsigned char out_message[7];
- out_message[0] = i%256;
- out_message[1] = i/256;
- snprintf((char*)&(out_message[2]),5,"%04x",i);
- zmq_send(pub_socket, out_message, sizeof(out_message)-1, 0);
- /* Original alternates send/recv
- * Uncomment this for failing case
- * }
- * for(int i = 0; i < 10000; i++)
- * {
- */
- //m = sub_sock.recv_multipart()
- zmq_msg_t message;
- zmq_msg_init (&message);
- int size = zmq_msg_recv(&message, sub_socket, 0);
- if (size == -1)
- zmq_msg_close(&message);
- else
- {
- unsigned char *the_message_data = (unsigned char*)zmq_msg_data(&message);
- zmq_msg_close(&message);
- //print m[1] ... actually printing out complete message (including envelope)
- printf("%d: ", i);
- for (int j = 0; j < 6; j++)
- printf("%02x ", the_message_data[j]);
- printf("\n");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement