Проблема с трансляцией с использованием Boost.Asio
Я заранее прошу прощения, если на вопрос уже был дан ответ, но яЯ искал и не нашел ничего, что поможет мне. Как указано в вопросеназвание, яЯ пытаюсь передать пакет с сервера группе клиентов, прослушивающих любое сообщение.
Клиент посчитает количество сообщений, полученных им в течение одной секунды.
Серверная сторона вещей выглядит так:
class Server
{
public:
Server(boost::asio::io_service& io)
: socket(io, udp::endpoint(udp::v4(), 8888))
, broadcastEndpoint(address_v4::broadcast(), 8888)
, tickHandler(boost::bind(&Server::Tick, this, boost::asio::placeholders::error))
, timer(io, boost::posix_time::milliseconds(20))
{
socket.set_option(boost::asio::socket_base::reuse_address(true));
socket.set_option(boost::asio::socket_base::broadcast(true));
timer.async_wait(tickHandler);
}
private:
void Tick(const boost::system::error_code&)
{
socket.send_to(boost::asio::buffer(buffer), broadcastEndpoint);
timer.expires_at(timer.expires_at() + boost::posix_time::milliseconds(20));
timer.async_wait(tickHandler);
}
private:
udp::socket socket;
udp::endpoint broadcastEndpoint;
boost::function tickHandler;
boost::asio::deadline_timer timer;
boost::array buffer;
};
Он инициализируется и запускается следующим образом:
int main()
{
try
{
boost::asio::io_service io;
Server server(io);
io.run();
}
catch (const std::exception& e)
{
std::cerr < e.what() < "\n";
}
return 0;
}