#include #include #include #include #include #include int main() { zmq::context_t context(1); zmq::socket_t subscriber(context, zmq::socket_type::sub); zmq::socket_t answer(context, zmq::socket_type::pub); int pub_port = 44772, col_port = 44773; subscriber.connect("tcp://127.0.0.1:" + std::to_string(pub_port)); subscriber.set(zmq::sockopt::subscribe, ""); answer.bind("tcp://127.0.0.1:" + std::to_string(col_port)); int trial = 0; while(1) { std::cout << "waiting for message " << trial << "\n"; std::vector send_msgs; zmq::recv_multipart(subscriber, std::back_inserter(send_msgs)); std::string filename = send_msgs[0].to_string(); std::cout << filename << std::endl; std::ofstream detFile(filename, std::ios::out | std::ios::binary); detFile << send_msgs[1].to_string(); // send ack std::cout << "sending ack. " << trial << "\n"; std::string ackStr("All good"); zmq::message_t ack(ackStr.size()); memcpy(ack.data(), ackStr.data(), ackStr.size()); std::cout << ack.to_string() << std::endl; answer.send(ack, zmq::send_flags::none); trial++; } }