#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #include #include using boost::asio::ip::udp; using std::cout; using std::cin; using std::endl; class sender { private: boost::asio::ip::udp::endpoint endpoint_; boost::asio::ip::udp::socket socket_; boost::asio::steady_timer timer_; int message_count_; std::string message_; short multicast_port = 13; int max_message_count = 10; public: sender(boost::asio::io_context& io_context, const boost::asio::ip::address& multicast_address) : endpoint_(multicast_address, multicast_port), socket_(io_context, endpoint_.protocol()), timer_(io_context), message_count_(0) { message_ = "abcd"; send_periodic(); } private: void send_periodic() { static int i = 0; std::ostringstream os; os << "Message " << message_count_++; socket_.async_send_to(boost::asio::buffer(message_), endpoint_, [this](boost::system::error_code ec, std::size_t /*length*/) { cout << i << endl; // show count ++i; }); timer_.expires_after(std::chrono::seconds(1)); timer_.async_wait([this](boost::system::error_code ec) { send_periodic(); }); } }; int main(int argc, char* argv[]) { try { boost::asio::io_context io_context; sender s(io_context, boost::asio::ip::make_address("127.0.0.1")); io_context.run(); } catch (std::exception& e) { std::cerr << "Exception: " << e.what() << "\n"; } return 0; }