如何使用boost:asio:ip:address IPV6转换为IPV4

时间:2018-12-13 08:09:22

标签: c++ boost asio

我用boost :: asio编写了一个小程序,将ipv6转换为ipv4,它编译良好,但是如果我运行程序,则会得到:

terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<std::bad_cast> >' what(): std::bad_cast Abgebrochen (Speicherabzug geschrieben)

我的代码:

#include <iostream>
#include <boost/asio/ip/address.hpp>

using namespace std;
using namespace boost::asio::ip;

int main(){
    address myIP = address::from_string("fe80::c87f:db87:787b:a7c4");
    address_v6 myIP6 = myIP.to_v6();
    address_v4 myIP4 = myIP.to_v4();
    cout << myIP4.to_string() <<endl;
    return EXIT_SUCCESS;
}

1 个答案:

答案 0 :(得分:0)

这是设计使然。 boost::asio::ip::address 一个IPv6地址,一个IPv4地址。一次不是全部

谈论“将IPv6转换为IPv4”根本没有意义。最接近的事情是构造一个“特定主机的已知地址”表,并在其中查找与您拥有的地址不同类型的地址。