ZBLOG

C语言 检查是否是合法的ipv4 地址或者ipv6地址或者ipv4 网段或者ipv6网段

在C语言中,可以使用正则表达式或字符串处理来检查是否是合法的IPv4地址、IPv6地址、IPv4网段或者IPv6网段。以下是一个示例函数,用于检查给定的字符串是否是合法的IPv4地址、IPv6地址、IPv4网段或者IPv6网段。

”`c #include #include #include

// 检查是否为合法的IP地址(包括IPv4和IPv6) int isValidIP(const char *ip) {

struct sockaddr_in sa;
struct sockaddr_in6 sa6;

if (inet_pton(AF_INET, ip, &(sa.sin_addr)) == 1) {
    return 1; // 是合法的IPv4地址
}

if (inet_pton(AF_INET6, ip, &(sa6.sin6_addr)) == 1) {
    return 2; // 是合法的IPv6地址
}

return 0; // 不是合法的IP地址

}

// 检查是否为合法的IP网段(包括IPv4网段和IPv6网段) int isValidSubnet(const char *subnet) {

regex_t regex;
int ret = regcomp(&regex, "^([0-9a-fA-F:.]+)/(\\d+)$", REG_EXTENDED);

if (ret != 0) {
    printf("Failed to compile regular expression.\n");
    return 0;
}

ret = regexec(&regex, subnet, 0, NULL, 0);

regfree(&regex);

if (ret == REG_NOERROR) {
    return 1; // 是合法的IP网段
}

return 0; // 不是合法的IP网段

}

int main() {

const char *ipv4 = "192.168.1.1";
const char *ipv6 = "2001:0db8:85a3:0000:0000:8a2e:0370:7334";
const char *ipv4_subnet = "192.168.0.0/24";
const char *ipv6_subnet = "2001:db8::/32";

int result;

result = isValidIP(ipv4);
if (result == 1) {
    printf("%s is a valid IPv4 address.\n", ipv4);
} else if (result == 2) {
    printf("%s is a valid IPv6 address.\n", ipv4);
} else {
    printf("%s is not a valid IP address.\n", ipv4);
}

result = isValidIP(ipv6);
if (result == 1) {
    printf("%s is a valid IPv4 address.\n", ipv6);
} else if (result == 2) {
    printf("%s is a valid IPv6 address.\n", ipv6);
} else {
    printf("%s is not a valid IP address.\n", ipv6);
}

if (isValidSubnet(ipv4_subnet)) {
    printf("%s is a valid IPv4 subnet.\n", ipv4_subnet);




内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:http://sdn.0voice.com/?id=2902

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?