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

3

假设我已经为UDP套接字(加入了组播组)上的异步接收记录了一个处理程序:

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

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

1个回答

3
我认为您可能想使用receive_from调用,该调用接收boost::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));

谢谢。我同时找到了这个:http://www.boost.org/doc/libs/1_36_0/doc/html/boost_asio/tutorial/tutdaytime7/src.html。已经批准! :-) - yves Baumes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接