使用boost的socket.async_send_to()

时间:2015-12-02 17:58:52

标签: sockets boost network-programming boost-asio shared-ptr

我已经坚持了一段时间了。我想发送以下内容:

boost::shared_ptr<uint8_t[]> m_data

通过电线使用:

_socket.async_send_to(boost::asio::buffer(m_data), m_remote_endpoint,
        boost::bind(&UDPServer::handle_send, this, message,
        boost::asio::placeholders::error,
        boost::asio::placeholders::bytes_transferred));

我收到错误“没有重载函数的实例boost :: asio :: buffer匹配参数列表boost::shared_ptr<uint8_t[]>

m_data填入另一个函数。

我怀疑这是因为我实际上必须在m_data上使用关键字new。但我无法弄明白该怎么做。我尝试过几种不同的变化。有人能在这里给我一些见解吗?这可能更像是如何取消引用共享指针然后任何东西的问题。提前谢谢!

1 个答案:

答案 0 :(得分:1)

boost :: asio :: buffer有一个令人印象深刻的构造函数列表,但它们都不需要shared_ptr<[]>(可能是lib作者的疏忽)。

在你的情况下,你只需要通过调用get来解压缩共享ptr。