【发布时间】:2020-06-09 20:55:37
【问题描述】:
是否可以在 c++ 中使用 boost lib 找出字符串是 FQDN 或 IP 地址。 我已经尝试了下面的代码,它适用于 IP 地址,但在 FQDN 的情况下会引发异常。
// getHostname returns IP address or FQDN
std::string getHostname()
{
// some work and find address and return
return hostname;
}
bool ClassName::isAddressFqdn()
{
const std::string hostname = getHostname();
boost::asio::ip::address addr;
addr.from_string(hostname.c_str());
//addr.make_address(hostname.c_str()); // make_address does not work in my boost version
if ((addr.is_v6()) || (addr.is_v4()))
{
std::cout << ":: IP address : " << hostname << std::endl;
return false;
}
// If address is not an IPv4 or IPv6, then consider it is FQDN hostname
std::cout << ":: FQDN hostname: " << hostname << std::endl;
return true;
}
在 FQDN 的情况下失败,因为 boost::asio::ip::address 在 FQDN 的情况下会抛出异常。
我也尝试过搜索相同的内容,在 python 中可以使用类似的东西,但我需要在 c++ 中。
【问题讨论】:
标签: c++11 boost-asio ip-address fqdn