示例#1
0
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;
	}
}
示例#3
0
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;
}