2012-04-19 17 views
4

asio::ip::address_v6は、パラメータとしてbytes_typeを取ります。これは基本的にネットワークバイトオーダーでboost::arrayです。asio :: ip :: address_v6()を初期化する最も簡単な方法は?

私はvoid *変数にRAW IPv6アドレスを持っています。 void *asio::ip::address_v6にする最も簡単な方法は何ですか。好ましくは、コンストラクタを使用する。

答えて

4

あなたが実際にstd::arrayすることができasio::ip::address_v6::bytes_type、または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); 

注意が直接、そのvoid*の代わりにbytes_typeを格納しますその構造を明らかに変更することができます。

関連する問題