Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何实现简单的boost.asio mulsticast发送器?_C++_Visual Studio 2005_Udp_Boost Asio_Multicast - Fatal编程技术网

C++ 如何实现简单的boost.asio mulsticast发送器?

C++ 如何实现简单的boost.asio mulsticast发送器?,c++,visual-studio-2005,udp,boost-asio,multicast,C++,Visual Studio 2005,Udp,Boost Asio,Multicast,我想使用boost.asio创建一个多播UDP发送器。 我有一个我的线程,我只想将boost用于: 插座 send() 错误处理 你能给点建议吗?你试过样品了吗 <boost>\libs\asio\example\multicast\ 你试过样品了吗 <boost>\libs\asio\example\multicast\ 这是相对容易实现的。下面是一个基本类,它可以处理使用同步调用所需的大部分内容: #include <boost/asio.hpp>

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

  • 插座

  • send()

  • 错误处理


你能给点建议吗?

你试过样品了吗

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

你试过样品了吗

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

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

#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_;
};
#包括
#包括
类多播发送器
{
公众:
多播发送器(const boost::asio::ip::地址和多播地址,
常量无符号短多播(U端口)
:ep(多播地址、多播端口)
{
socket.reset(新的boost::asio::ip::udp::socket(svc_,ep_.protocol());
}
~multicastssender()
{
插座复位(空);
}
公众:
无效发送数据(常量std::string和msg)
{
套接字->发送到(
boost::asio::buffer(msg.str()),ep_);
}
私人:
boost::asio::ip::udp::endpoint ep;
boost::作用域的ptr套接字;
boost::asio::io_服务svc;
};

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

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

#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_;
};
#包括
#包括
类多播发送器
{
公众:
多播发送器(const boost::asio::ip::地址和多播地址,
常量无符号短多播(U端口)
:ep(多播地址、多播端口)
{
socket.reset(新的boost::asio::ip::udp::socket(svc_,ep_.protocol());
}
~multicastssender()
{
插座复位(空);
}
公众:
无效发送数据(常量std::string和msg)
{
套接字->发送到(
boost::asio::buffer(msg.str()),ep_);
}
私人:
boost::asio::ip::udp::endpoint ep;
boost::作用域的ptr套接字;
boost::asio::io_服务svc;
};

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

您到底遇到了什么问题?你能发布一些到目前为止你已经尝试过的代码吗?你到底有什么问题?你能发布一些到目前为止你已经尝试过的代码吗?我见过多播发送器的例子,但可能不是我需要的。我现在有了自己的线程(我必须使用线程的这个实现)。我只想对套接字使用boost:如果我看到发送器,我知道有一些异步的东西:你可以使用一些线程吗?我注意到:void handle\u send\u to(const boost::system::error\u code&error);无效句柄超时(const boost::system::error\u代码和错误);是否可以使用同步套接字?@GgSalent我不清楚您在评论中提出了什么问题。也许试着澄清你原来的问题,或者问一个新问题?我见过多播发送者的例子,但也许不是我需要的。我现在有了自己的线程(我必须使用线程的这个实现)。我只想对套接字使用boost:如果我看到发送器,我知道有一些异步的东西:你可以使用一些线程吗?我注意到:void handle\u send\u to(const boost::system::error\u code&error);无效句柄超时(const boost::system::error\u代码和错误);是否可以使用同步套接字?@GgSalent我不清楚您在评论中提出了什么问题。也许试着澄清你原来的问题,或者问一个新问题?这不会编译,msg.str()是错误的,即使它是c_str(),它也不能与send_to()一起工作。这不会编译,msg.str()是错误的,即使它是c_str(),它也不能与send_to()一起工作。