点分十进制IP校验、转换,掩码校验

/*****************************************************************************
 *                      点分十进制IP校验、转换,掩码校验
 * 声明:
 *     本文主要记录如何对IP、掩码进行转换、校验等相关内容,注意大小端的问题。
 *
 *                                           2016-5-5 深圳 南山平山村 曾剑锋
 ****************************************************************************/

一、参考文档:
    1. java编程,如何检查一个给定的字符串IP是否合法?
        http://www.oschina.net/question/994728_115374
    2. js验证IP及子网掩码的合法性有效性示例
        http://www.bkjia.com/Javascript/763031.html

二、点分十进制IP转整形
    static public int numericIPToInt(String numericIP) {
        String [] ips = numericIP.split("\\.");
        int ip = Integer.valueOf(ips[0]) << 24 |
            Integer.valueOf(ips[1]) << 16 |
            Integer.valueOf(ips[2]) << 8 |
            Integer.valueOf(ips[3]);

        return ip;
    }

    static public String intToNumericIP(int ip) {
        return (ip & 0xff) + "."
            + ((ip >> 8) & 0xff) + "."
            + ((ip >> 16) & 0xff)+ "."
            + ((ip >> 24) & 0xff));
    }

三、IP校验
    public static boolean isIpv4(String ipAddress) {
        String ip = "^(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|[1-9])\\."
                + "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\."
                + "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\."
                + "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)$";
        Pattern pattern = Pattern.compile(ip);
        Matcher matcher = pattern.matcher(ipAddress);
        return matcher.matches();
    }

四、netmask校验
    public static boolean isNetmask(String netmask) {
        String mask="^(254|252|248|240|224|192|128|0)\\.0\\.0\\.0" +
                "|255\\.(254|252|248|240|224|192|128|0)\\.0\\.0" +
                "|255\\.255\\.(254|252|248|240|224|192|128|0)\\.0" +
                "|255\\.255\\.255\\.(254|252|248|240|224|192|128|0)$";
        Pattern pattern = Pattern.compile(mask);
        Matcher matcher = pattern.matcher(netmask);
        return matcher.matches();
    }

 

时间: 2024-10-02 11:08:10

点分十进制IP校验、转换,掩码校验的相关文章

c c++-写一个函数判断输入的字符串是否是一个点分十进制格式的IP地址

问题描述 写一个函数判断输入的字符串是否是一个点分十进制格式的IP地址 写一个函数判断输入的字符串是否是一个点分十进制格式的IP地址 解决方案 #include ""winsock2.h""#pragma comment(libws2_32.lib"")BOOL CheckIsValidIP(const char* sIP){ unsigned long ulAddress = inet_addr(sIP); if (INADDR_NONE ==

java中IP地址转换十进制数实现代码

先看实例  代码如下 class ip { private static long iptolong(string strip) //将127.0.0.1 形式的ip地址转换成10进制整数,这里没有进行任何错误处理 { int j=0; int i=0; long [] ip=new long[4]; int position1=strip.indexof("."); int position2=strip.indexof(".",position1+1); int

ip地址转换成十进制实现程序

,以"61.175.232.30"这个IP地址为例,IP地址转换成数字串方法如下:先将"61.175.232.30"转换为十六进制"3d.af.e8.1e",然后去掉小数点后,变为"3dafe81e",最后将这个十六进制数转换为十进制"1034938398",那么"61.175.232.30"就变为"1034938398"了. 方法一:  代码如下 复制代码 publ

Oracle中IP地址和掩码转换成CIDR格式

遇到的问题如下:数据库中存储了IP地址,以及IP地址掩码,需要将他们转化成CIDR格式的,并且不仅仅是将掩码转化成CIDR对应的数字的问题,需要将原有的IP地址转化成对应的网络地址,例如IP地址是58.247.221.238,掩码是255.255.255.252,需要将其转化为58.247.221.236/30. 解决方案:我们知道,将IP地址和掩码通过位与函数就能得到对应的网络地址.Google一下,找到了将IPv4地址转成数字以及转化回来的函数.有了这两个函数,再利用Oracle 自带的bi

PowerShell把IP地址转换成二进制的方法_PowerShell

IPv4地址其实是32位二进制数字,然后我们将它分成四段,每段8位.8位二进制能表达的范围是0~255,所以点分十进制的每一个数字的取值都在0~255之间.有的时候,比如为了换算子网掩码,我们需要将IP地址还原成二进制串的形式,如:11000000101010000000110000100001.今天小编看到一个例子就是来完成这个操作的. 代码如下: 复制代码 代码如下: $ipV4 = '192.168.12.33' -join ($ipV4.Split('.') | ForEach-Obje

1.socket编程:socket编程,网络字节序,函数介绍,IP地址转换函数,sockaddr数据结构,网络套接字函数,socket相关函数,TCP server和client

 1  Socket编程 socket这个词可以表示很多概念: 在TCP/IP协议中,"IP地址+TCP或UDP端口号"唯一标识网络通讯中的一个进程,"IP 地址+端口号"就称为socket. 在TCP协议中,建立连接的两个进程各自有一个socket来标识,那么这两个socket组成的socket pair就唯一标识一个连接.socket本身有"插座"的意思,因此用来描述网络连 接的一对一关系. TCP/IP协议最早在BSD UNIX上实现,

科学知识:二进制、八进制、十进制、十六进制转换_其它综合

一. 十进制与二进制之间的转换 (1) 十进制转换为二进制,分为整数部分和小数部分 ① 整数部分 方法:除2取余,逆序排列,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数.下面举例: 例:将十进制的168转换为二进制 得出结果 将十进制的168转换为二进制,(10101000) 第一步,将168除以2,商84,余数为0. 第二步,将商84除以2,商42余数为0.

nutch 代理 本地ip与代理ip之间转换

问题描述 nutch 代理 本地ip与代理ip之间转换 我用的是Nutch1.9版本的,在爬去网站过程中好像因为同一ip访问频繁然后ip被封了,正在尝试用代理,但是如果代理ip被封了的话,nutch会使用本机的ip继续进行爬去吗?然后等本机ip被封的时候又转代理ip进行爬去?这样循环转换..... 解决方案 http://fuliang.iteye.com/blog/148999

python将ip地址转换成整数的方法

 这篇文章主要介绍了python将ip地址转换成整数的方法,涉及Python针对IP地址的转换技巧,需要的朋友可以参考下     本文实例讲述了python将ip地址转换成整数的方法.分享给大家供大家参考.具体分析如下: 有时候我们用数据库存储ip地址时可以将ip地址转换成整数存储,整数占用空间小,索引也会比较方便,下面的python代码自定义了一个ip转换成整数的函数,非常简单,代码同时还提供了整数转换成ip地址的方法. ? 1 2 3 4 5 6 7 import socket, struc