我怎样才能实现简单的boost.asio mulsticast发送器?

时间:2011-04-29 15:29:41

标签: c++ visual-studio-2005 udp boost-asio multicast

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

  • 插座;

  • 发送();

  • 错误处理;

你能提出一些建议吗?

2 个答案:

答案 0 :(得分:3)

这是相对简单的完成。这是一个基本类,使用同步调用处理您需要的大部分内容:

#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()将组播数据发送到关联的端点。

答案 1 :(得分:1)

你试过样品吗?

<boost>\libs\asio\example\multicast\

它包含

的样本
receiver.cpp
sender.cpp