判断IP地址与掩码是否合法程序

#include <stdio.h>

#include <arpa/inet.h>

#include <errno.h>

#include <string.h>

int if_a_string_is_a_valid_ipv4_address(const char *str)

{

struct in_addr addr;

int ret;

volatile int local_errno;

errno = 0;

ret = inet_pton(AF_INET, str, &addr);

local_errno = errno;

if (ret > 0);

else if (ret < 0)

printf("EAFNOSUPPORT: %s\n", strerror(local_errno));

else

printf("\"%s\" is not a valid IPv4 address\n", str);

return ret;

}

bool IsSubnetMask_and_Is_ipv4_address(const char *ip_address, char *subnet)

{

if ( if_a_string_is_a_valid_ipv4_address(ip_address) )

{

unsigned int b = 0, i, n[4];

sscanf(subnet, "%u.%u.%u.%u", &n[3], &n[2], &n[1], &n[0]); //subnet 为子网掩码

for(i = 0; i < 4; ++i) //将子网掩码存入32位无符号整型

b += n[i] << (i * 8);

b = ~b + 1;

if((b & (b - 1)) == 0)   //判断是否为2^n

return true;

}

return false;

}

int main(int argc, char *argv[])

{

if ( argc == 3 )

{

if ( IsSubnetMask_and_Is_ipv4_address(argv[1], argv[2]) )

{

printf("ip yanma address is success.\n");

}

else

{

printf("no\n");

}

}

else

{

printf("INVALIUD ARGS.\n");

}

return 0;

}

时间: 2024-11-03 20:45:56

判断IP地址与掩码是否合法程序的相关文章

26:IPMaskCheck识别有效的ip地址和掩码并分类统计

题目描述 请解析IP地址和对应的掩码,进行分类识别.要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类. 所有的IP地址划分为 A,B,C,D,E五类 A类地址1.0.0.0~126.255.255.255; B类地址128.0.0.0~191.255.255.255; C类地址192.0.0.0~223.255.255.255; D类地址224.0.0.0~239.255.255.255: E类地址240.0.0.0~255.255.255.255 私网IP范围是: 10.0.0

C# 判断ip地址是否正确

最后要用一方法判断ip地址是否正确,直接用.Net现成的类,方法如下: string ipStr="192.168.222.333"; IPAddress ip; if(IPAddress.TryParse(ipStr,out ip)) { Console.WriterLine("合法IP"); } else { Console.WriterLine("非法IP"); }

Python 输入IP地址及掩码告诉你该网段包含的全部地址(IPy模块练习)

IPy模块原本使用时需要输入正确的网络位和掩码,我利用处理报错的机制实现了输入任意IP地址和掩码均可正确输出结果的小程序. 1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 # @Date : 2017-09-04 21:57:15 4 # @Author : EnderZhou ([email protected]) 5 # @Link : http://www.cnblogs.com/enderzhou/ 6 # @Version : $

[华为机试练习题]34.识别有效的IP地址和掩码并进行分类统计

题目 描述: 请解析IP地址和对应的掩码,进行分类识别.要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类. 所有的IP地址划分为 A,B,C,D,E五类 A类地址1.0.0.0~126.255.255.255; B类地址128.0.0.0~191.255.255.255; C类地址192.0.0.0~223.255.255.255; D类地址224.0.0.0~239.255.255.255: E类地址240.0.0.0~255.255.255.255 私网IP范围是: 10.0

C#判断ip地址是否ping的通

Ping pingSender = new Ping(); PingReply reply = pingSender.Send("127.0.0.1",120);//第一个参数为ip地址,第二个参数为ping的时间 if(reply.Status == IPStatus.Success) { //ping的通 } else { //ping不通 } C#判断ip地址是否ping的通,布布扣,bubuko.com

识别有效的IP地址和掩码并进行分类统计

描述 请解析IP地址和对应的掩码,进行分类识别.要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类. 所有的IP地址划分为 A,B,C,D,E五类 A类地址1.0.0.0~126.255.255.255; B类地址128.0.0.0~191.255.255.255; C类地址192.0.0.0~223.255.255.255; D类地址224.0.0.0~239.255.255.255: E类地址240.0.0.0~255.255.255.255 私网IP范围是: 10.0.0.0

写一个简单的python脚本来返回ip地址的掩码,子网个数等

如果我们想快速得到一个IP地址段有多少个ip,快速得到IP地址段的子网掩码,或者快速得到一个IP地址的二进制,那么可以来学习一下.本文利用python的一个IP分析模块IPy实现,首先安装IPy模块 wget https://pypi.python.org/packages/88/28/79162bfc351a3f1ab44d663ab3f03fb495806fdb592170990a1568ffbf63/IPy-0.83.tar.gz tar -xf IPy-0.83.tar.gz cd IP

java判断 ip 地址是否正确的正则表达式

java正则表达式判断 ip 地址是否正确 public class ClassWork05 { public static void main(String[] args) { System.out.println(IsIp.isIp("10.10.1.1")); } } class IsIp{ public static boolean isIp(String ip) { boolean b1 = ip.matches("([1-9]|[1-9]\\d|1\\d{2}|2

js判断ip地址,子网掩码,网关的逻辑性检查

因为要做静态地址配置的js校验,找了好多资料发现网上都是关于ip,mask的有效性检查,没有ip,submask,gateway的逻辑性判断,自己写下代码供需要的人参考. 普及下网关地址知识: 就是进行与运算1与1得1,1与0为0,0与0为0.首先把ip和子网掩码展开 10.70.64.223 00001010 .01000110.01000000.11011111 255.255.255.0 111111111.11111111.11111111.00000000 网段就是 00001010