使用boost asio时如何获取UDP远程端点?

时间:2013-04-29 13:18:20

标签: c++ boost boost-asio

假设我已经在UDP套接字上加入了异步接收处理程序(加入组播组):

         udpSocket.async_receive(boost::asio::buffer(buffer, sizeof(buffer)),
                                 boost::bind(&receiveCallback,
                                              boost::asio::placeholders::error,
                                              boost::asio::placeholders::bytes_transferred));

这里的想法是,我想在接收UDP pacquet时获得receiveCallBack中的远程地址和端口。怎么做?是否有特定的占位符?如果没有,一旦在Callback中如何获取该信息?

1 个答案:

答案 0 :(得分:3)

我认为您可能希望使用receive_from调用,该调用会使用boost::asio::ip::udp::endpoint来捕获发件人数据。

boost asio示例here中有一个示例多播接收器。特别是这个块:

socket_.async_receive_from(
    boost::asio::buffer(data_, max_length), sender_endpoint_,
    boost::bind(&receiver::handle_receive_from, this,
      boost::asio::placeholders::error,
      boost::asio::placeholders::bytes_transferred));