合法IP检测

**合法IP检测:

首先检测是否有非法字符,

然后检测点的数量,

然后检测是否有点在开头或结尾或有连续的点连在一起以及每个部分的位数及数值是否合法。**

#include <stdio.h>
#include <string.h>

const int maxn = 110;
char buf[maxn], buf2[maxn];

bool isValidChar(const char *str) {
    for (int i = 0; str[i]; ++i)
        if (str[i] != ‘.‘ && !(str[i] >= ‘0‘ && str[i] <= ‘9‘))
            return false;
    return true;
}

int countDot(char * str) {
    int cnt = 0;
    for (int i = 0; str[i]; ++i)
        if (str[i] == ‘.‘) ++cnt;
    return cnt;
}

bool check(const char *str) {
    int digit = 0, id = 0, len;
    for (int i = 0; str[i]; ++i) {
        if (str[i] == ‘.‘) {
            buf2[id] = ‘\0‘;
            if (*buf2 == ‘\0‘) return false;    // two ‘.‘ connected or begin with ‘.‘
            else if ((len = strlen(buf2)) > 1 && *buf2 == ‘0‘ || len > 3)
                return false;                   // .012.
            else if (digit > 255) return false;
            digit = id = 0;
        } else {
            digit = digit * 10 + str[i] - ‘0‘;
            buf2[id++] = str[i];
        }
    }

    return true;
}

int main() {
    while (gets(buf)) {
        int len = strlen(buf);
        buf[len++] = ‘.‘;       // Easy to handle
        buf[len] = ‘\0‘;
        if (!isValidChar(buf) || countDot(buf) != 4 || !check(buf))
            puts("NO");
        else puts("YES");
    }
    return 0;
}
时间: 2024-08-10 17:01:40

合法IP检测的相关文章

判断一个字符串是否为合法IP

输入任意一个字符串,判断是否为合法IP 1 bool IsIPAddress(const char * str){ 2 //先判断形式是否合法, 3 4 //检查是否只包含点和数字 5 for(int i = 0; str[i] != '\0'; i++){ 6 if(!IsDigit(str[i]) && str[i] != '.') 7 return false; 8 } 9 10 //检查是否形如X.X.X.X 11 int count = 0; 12 for(int i = 0;

java 实现判断合法IP

判断一个IP是否为合法IP其实就是看其格式是否满足IP格式 这里直接用java实现 public static boolean isIP(String ip){ String Ip = ip.replaceAll(" ",""); if(Ip.matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}")){ String st = Ip.split("\\."); if(Intege

Linux初学者的简易脚本---- 匹配合法ip

#!/bin/bash # Author: tianzhaogao (E-mail: [email protected]) #ip.txt 要匹配的ip文件 #okip.txt 匹配出的合法ip rm -rf /root/test/okip.txt    #初始化 touch /root/test/okip.txt     #初始化 ip=$(cat ip.txt | grep "^[0-9]\{1,3\}\.[0-9]\{0,3\}\.[0-9]\{0,3\}\.[0-9]\{0,3\}&qu

合法ip序列

Given a string containing only digits, restore it by returning all possible valid IP address combinations. For example: Given "25525511135", return ["255.255.11.135", "255.255.111.35"]. (Order does not matter) 用pos[]放第i个点打的位置

公网IP检测

脚本如下: #!/bin/bash #author firxiao #monitor IP change #date:20141128 ip_old=ip_old.txt    ip_now=ip_now.txt [email protected]    #发件人 [email protected]      #收件人 mail_subject=IP_MONITOR    #邮件标题 #init ip.old while [ ! -f $ip_old ]; do /usr/bin/curl if

java判断是否是合法IP

public boolean ipCheck(String text) { if (text != null && !text.isEmpty()) { // 定义正则表达式 String regex = "^(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|

公网IP检测(python)

shell版的见 http://my.oschina.net/firxiao/blog/349727 本项目地址:  https://github.com/Firxiao/check_public_ip 使用方法: git clone https://github.com/Firxiao/check_public_ip.git cd check_public_ip chmod +x check_public_ip.py cp conf.ini.example conf.ini 更改配置文件 将其

python判断合法IP并区分内网和外网地址

import re def legit_ip(_ip): compile_ip = re.compile('^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$') if compile_ip.match(_ip): return True else: return False def ip_intr_extr(huanggr): intr = [10,172,192] intranet_ips = [] extr

Windows下利用Python动态检测外网IP并发邮件给邮箱

我们知道,运营商给分配的都是动态IP,IP地址过一段时间会自己变化,这就给需要静态地址的应用带来不便,例如搭建服务器或者远程控制电脑,这种情况必须知道自己电脑的IP,利用Python可以方便的自动检测并向邮箱发送邮箱. 但是,个人网络一般都是通过路由器来上网,直接检测电脑的IP并不可行,需要得到外网的IP.内网电脑可以通过端口映射来映射到外网.检测的原理如下: 1.通过自己的电脑信息不太好获取外网IP,幸好有一些雷锋网站可以帮助我们来检测,例如 http://city.ip138.com/ip2