【问题标题】:Quickest way to initialize asio::ip::address_v6()?初始化 asio::ip::address_v6() 的最快方法?
【发布时间】:2012-04-30 13:04:19
【问题描述】:

asio::ip::address_v6 采用bytes_type 作为参数,基本上是网络字节顺序的boost::array

我在 void * 变量中有一个原始 IPv6 地址。将void * 转换为asio::ip::address_v6 的最快方法是什么?最好使用构造函数。

【问题讨论】:

    标签: c++ boost initialization ip-address boost-asio


    【解决方案1】:

    您最好初始化一个asio::ip::address_v6::bytes_type,它实际上可以是std::arrayboost::array

    // We need an unsigned char* pointer to the IP address
    unsigned char *youraddr = reinterpret_cast<unsigned char*>(your_void_ptr);
    asio::ip::address_v6::bytes_type myaddr;
    // Copy the address into our array
    std::copy(youraddr, youraddr + myaddr.size(), myaddr.data());
    // Finally, initialize.
    asio::ip::address_v6 ipv6(myaddr);
    

    请注意,如果您能够修改该结构,显然,最好直接存储 bytes_type 而不是 void*

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-13
      • 1970-01-01
      • 2014-09-10
      • 1970-01-01
      • 1970-01-01
      • 2018-03-09
      • 2011-11-24
      • 1970-01-01
      相关资源
      最近更新 更多