gpt4 book ai didi

c++ - 通过 Boost Asio 获取 UDP 数据报长度?

转载 作者:行者123 更新时间:2023-11-30 04:10:57 24 4
gpt4 key购买 nike

是否可以通过 Boost Asio 获取 UDP 数据报的长度? UDP header 有一个字段指定 UDP 数据包的长度。是否可以通过 Boost Asio 获得此值?如果不是,如何确定数据包的长度?

最佳答案

asio 允许您在执行读取时绑定(bind)完成处理程序。完成处理程序的参数之一是数据包长度。

您的读取完成处理程序必须满足 http://www.boost.org/doc/libs/1_55_0/doc/html/boost_asio/reference/ReadHandler.html 中指定的要求

例如看http://www.boost.org/doc/libs/1_55_0/doc/html/boost_asio/example/cpp03/echo/async_udp_echo_server.cpp .在对 async_receive_from 的调用中,您指定读取完成后要调用的完成处理程序:

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

因此,当完成处理程序 handle_receive_from 被执行时,asio 将读取的字节大小传递给处理程序。

void handle_receive_from(const boost::system::error_code& error,
size_t bytes_recvd)

关于c++ - 通过 Boost Asio 获取 UDP 数据报长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20391600/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com