使用 boost 的 socket.async_send_to()
Using boost's socket.async_send_to()
我已经坚持了一段时间了。我正在尝试发送以下内容:
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));
我收到错误 "no instance of overloaded function boost::asio::buffer matches the argument list boost::shared_ptr<uint8_t[]>
"
m_data在另一个函数中填写。
我怀疑这是因为我实际上必须在 m_data 上使用关键字 new。但我不太清楚该怎么做。我尝试了几种不同的变体。有人可以在这里给我一些见解吗?这可能更多是关于如何取消引用共享指针的问题。提前致谢!
boost::asio::buffer 有一个令人印象深刻的构造函数列表,但它们都没有 shared_ptr<[]>
(可能是 lib 作者的疏忽)。
在你的情况下,你只需要取消引用共享 ptr,例如,通过调用 get 就可以了。
我已经坚持了一段时间了。我正在尝试发送以下内容:
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));
我收到错误 "no instance of overloaded function boost::asio::buffer matches the argument list boost::shared_ptr<uint8_t[]>
"
m_data在另一个函数中填写。
我怀疑这是因为我实际上必须在 m_data 上使用关键字 new。但我不太清楚该怎么做。我尝试了几种不同的变体。有人可以在这里给我一些见解吗?这可能更多是关于如何取消引用共享指针的问题。提前致谢!
boost::asio::buffer 有一个令人印象深刻的构造函数列表,但它们都没有 shared_ptr<[]>
(可能是 lib 作者的疏忽)。
在你的情况下,你只需要取消引用共享 ptr,例如,通过调用 get 就可以了。