我如何实现简单的提升.亚洲组播发送者

How can i implement simple boost.asio mulsticast sender?

本文关键字:发送者 简单 何实现 实现      更新时间:2023-10-16

我想使用boost。asio创建多播UDP发送方。我有一个我的线程,我想只使用boost:

  • 插座;

  • 发送();

  • 错误处理;

你有什么建议吗?

实现起来相对简单。下面是一个基本类,它可以处理使用同步调用所需的大部分内容:

#include <boost/asio.hpp>
#include <boost/scoped_ptr.hpp>
class MulticastSender
{
public:
   MulticastSender(const boost::asio::ip::address& multicast_addr,
      const unsigned short multicast_port)
         : ep_(multicast_addr, multicast_port)
   {
      socket_.reset(new boost::asio::ip::udp::socket(svc_, ep_.protocol()));
   }
   ~MulticastSender()
   {
      socket_.reset(NULL);
   }
public:
   void send_data(const std::string& msg)
   {
      socket_->send_to(
         boost::asio::buffer(msg.str()), ep_);
   }
private:
   boost::asio::ip::udp::endpoint                  ep_;
   boost::scoped_ptr<boost::asio::ip::udp::socket> socket_;
   boost::asio::io_service                         svc_;
};

这个简单的类满足3个要求中的2个(没有错误处理)。要使用它,只需在适当的位置创建一个实例,线程实现只需调用MulticastSender::send_data()将多播数据发送到关联的端点。

你试过样品了吗?

<boost>libsasioexamplemulticast

包含

的示例
receiver.cpp
sender.cpp