在昨天的博文里分享了一个 主机名 转化成 IP 地址的方法,具体参看昨天的文章:https://www.madbull.site/?p=2150
但是在使用之前,需要对提供的字符串做一个简单的识别。如果本身提供的是IP地址,那么我们就没必要再做转换了。
下面就是一个简单的识别方法:
/**
* @brief 判断给的字符串是不是IP地址
*
* @param str
*
* @return
*/
int is_valid_ip(const char *str) {
struct in_addr addr4;
struct in6_addr addr6;
if (inet_pton(AF_INET, str, &addr4) == 1) {
return 1; // IPv4
} else if (inet_pton(AF_INET6, str, &addr6) == 1) {
return 2; // IPv6
}
return 0; // 不是 IP 地址
}
IPv4格式返回 1 ,IPv6格式返回 2,不是 IP 地址,就可以尝试使用 getaddrinfo 方法查询 IP 地址了。
发表回复