int main(int argc, char* argv[]) { zmq::context_t context(1); zmq::socket_t subscriber(context, ZMQ_SUB); subscriber.connect("tcp://localhost:5561"); subscriber.setsockopt(ZMQ_SUBSCRIBE, "", 0); zmq::socket_t syncclient(context, ZMQ_REQ); syncclient.connect("tcp://localhost:5562"); s_send(syncclient, ""); s_recv(syncclient); std::cout << "Connected to subscriber" << std::endl; int update_nbr = 0; while(1) { if (s_recv(subscriber).compare("END") == 0) { std::cout << "FINE" << std::endl; break; } update_nbr++; } std::cout << "Received " << update_nbr << "updates" << std::endl; return 0; }
bool SocketToTF::syncWithPublisher(zmq::context_t& context) { if (transform_socket_server_port_sync_ >= 0) { ROS_INFO("Syncing with the publisher"); zmq::socket_t syncclient(context, ZMQ_REQ); std::stringstream ss_connection_sync_; ss_connection_sync_ << transform_socket_server_protocol_ << "://" + transform_socket_server_host_ << ":" << transform_socket_server_port_sync_; syncclient.connect(ss_connection_sync_.str().c_str()); zmq::message_t send_message(0); if (!syncclient.send(send_message)) { syncclient.close(); return false; } zmq::message_t recv_message; bool recv_status = syncclient.recv(&recv_message); syncclient.close(); ROS_INFO("Syncing finished"); return recv_status; } else { return false; } }
int main (int argc, char *argv[]) { zmq::context_t context(1); // First, connect our subscriber socket zmq::socket_t subscriber (context, ZMQ_SUB); subscriber.connect("tcp://localhost:5561"); subscriber.setsockopt(ZMQ_SUBSCRIBE, "", 0); // Second, synchronize with publisher zmq::socket_t syncclient (context, ZMQ_REQ); syncclient.connect("tcp://localhost:5562"); // - send a synchronization request s_send (syncclient, ""); // - wait for synchronization reply std::string *string = s_recv (syncclient); delete (string); // Third, get our updates and report how many we got int update_nbr = 0; while (1) { std::string *string = s_recv (subscriber); if (string->compare("END") == 0) { delete (string); break; } delete (string); update_nbr++; } std::cout << "Received " << update_nbr << " updates" << std::endl; return 0; }