我用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;
}
答案 0 :(得分:0)
这是设计使然。 boost::asio::ip::address
是 一个IPv6地址,或一个IPv4地址。一次不是全部。
谈论“将IPv6转换为IPv4”根本没有意义。最接近的事情是构造一个“特定主机的已知地址”表,并在其中查找与您拥有的地址不同类型的地址。