我想使用boost.asio来创建多播UDP发送方。 我有一个我的线程,我只想使用boost:
插座;
发送();
错误处理;
你能提出一些建议吗?
答案 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