【发布时间】: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
asio::ip::address_v6 采用bytes_type 作为参数,基本上是网络字节顺序的boost::array。
我在 void * 变量中有一个原始 IPv6 地址。将void * 转换为asio::ip::address_v6 的最快方法是什么?最好使用构造函数。
【问题讨论】:
标签: c++ boost initialization ip-address boost-asio
您最好初始化一个asio::ip::address_v6::bytes_type,它实际上可以是std::array 或boost::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*。
【讨论】: