3

假设我在 UDP 套接字(加入了多播组)上重新编写了异步接收处理程序:

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

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

4

1 回答 1

3

我想你可能想使用receive_from调用,它接受 aboost::asio::ip::udp::endpoint来捕获发件人数据。

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

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));
于 2013-04-29T13:31:45.043 回答