假设我已经在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中如何获取该信息?
答案 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));