[zeromq-dev] ZMQ PUB-SUB problem

Edwin van den Oetelaar oetelaar.automatisering at gmail.com
Thu Jun 27 20:17:55 CEST 2013


Just a remark :

zmq_setsockopt (subscriber, ZMQ_RCVTIMEO,"1000",4);

looks wrong to me, http://api.zeromq.org/3-0:zmq-setsockopt
defines the parameter value as an INT not a string.

so usage would be like

int timeout = 1000 ; /* in milli seconds */
zmq_setsockopt (subscriber, ZMQ_RCVTIMEO, &timeout, sizeof (int) );

On Thu, Jun 27, 2013 at 8:19 AM, Amar Pol <amarpol1305 at gmail.com> wrote:
> Hello,
>
> I am using zmq for ARM device on C- platform. And i am using DHCP as a
> network mode.
>
> My problem is as described follow.
>
> I am using pub-sub protocol for my application and subscribers having dhcp
> network mode. and communication is working very fine.
>
> Now if some how IP address of subscriber(biometric device in our case)
> changes , communication breaks.
>
> subscriber not able to receive any command from publisher.
>
> Is there any way to handle IP change in subscriber.
>
>
> Here is the code I an using.
>
> ###########################  subscriber.c
> #####################################
>
> int command_zmq=0,connect_flag=0;
>         char device_code[30],*sp;
>         void *context = zmq_ctx_new ();
>         void *subscriber = zmq_socket (context, ZMQ_SUB);
>         int rec_data,i;
>         char add_buf[256];
>         char data_buf[256];
>
>         /*--------------------------------*/
>         if(zmq_connect (subscriber, Dev_Conf.ZMQ_URL) == 0)
>         {
>
>                 connect_flag = 1;
>                 zmq_setsockopt (subscriber,ZMQ_SUBSCRIBE,location_id,6);
>                 zmq_setsockopt (subscriber, ZMQ_RCVTIMEO,"1000",4);
>         }
>         while(1)
>         {
>
>                 command_zmq = 0;
>                 read_wait();
>                 if(connect_flag != 1)
>                 {
>                         if(zmq_connect (subscriber, Dev_Conf.ZMQ_URL) == 0)
>                         {
>                                 connect_flag = 1;
>                                 zmq_setsockopt (subscriber,
> ZMQ_SUBSCRIBE,location_id,6);
>                                 zmq_setsockopt (subscriber,
> ZMQ_RCVTIMEO,"1000",4);
>                         }
>                 }
>
>                 if(self_enroll_flag  == FALSE && MenuStage == ZERO &&
> StopZmq_Rec == FALSE)
>                 {
>
>                         if(connect_flag ==1){
>
> memset(device_code,'\0',sizeof(device_code));
>                                 memset(add_buf,'\0',sizeof(add_buf));
>                                 memset(data_buf,'\0',sizeof(data_buf));
>                 if(check_device_online() == 0 ){
>                                         zmq_recv (subscriber, add_buf, 256,
> ZMQ_DONTWAIT);
>                                         zmq_recv (subscriber, data_buf, 256,
> ZMQ_DONTWAIT);
>                                         printf("\n Data is data_buf =%s
> \n",data_buf);
>                                          if(strlen(data_buf) > 0)
>                                         {
>                                         command_zmq =
> atoi((char*)(token_in_between(data_buf, '=', ',')));
>                                         sp =
> (char*)(token_in_between(strstr(data_buf, "device_code"), '=', ','));
>                                         strcpy(device_code, sp);
>                                         }
>
>                                 }
>                         }
>                                 if(strcmp(device_code,Dev_Conf.Device_ID) ==
> 0 || strcmp(device_code,"ALL") == 0)
>                                 {
>                                         init_server_flags();
>                                         set_operational_flag(command_zmq);
>                                 }
>                 }
>                 sleep(2);
>         }
>         zmq_close (subscriber);
>         zmq_ctx_destroy (context);
>
>
>
>
> ################################################################
>
>
> --
> Regards&Thanks
> Amar Pol
> Software Engineer
>
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>



More information about the zeromq-dev mailing list