判断一个IP是否在指定的网络中

来源:互联网 发布:js 手机号验证 编辑:程序博客网 时间:2024/06/07 01:23
/**inspect any ip is in subnet?*/#include    <stdio.h>#include    <sys/types.h>#include    <netinet/in.h>#include    <arpa/inet.h>int main(int argc, char **argv){    if (argc != 4)    {        printf("usage:test <ip.address> <net.address> <mask.address>");        return -1;    }    struct sockaddr_in ipaddr;/*IP ADDR---argv[1]*/    struct sockaddr_in netaddr;/*NET ADDR*/    struct sockaddr_in maskaddr;/*MASK ADDR ,string=255.255.255.0*/    if (inet_pton(AF_INET,argv[1], &ipaddr.sin_addr) < 1)    {        printf("inet_pton error:%s\n",argv[1]);        return -1;    }    if (inet_pton(AF_INET,argv[2],&netaddr.sin_addr) < 1)    {        printf("inet_pton error:%s\n",argv[2]);        return -1;    }    if (inet_pton(AF_INET,argv[3],&maskaddr.sin_addr) < 1)    {        printf("inet_pton error:%s\n",argv[3]);        return -1;    }    if ((ipaddr.sin_addr.s_addr & maskaddr.sin_addr.s_addr) == netaddr.sin_addr.s_addr)    {        printf("this ip is in the subnet\n");        return 0;    }    else    {        printf("this ip is not in the subnet\n");        return 0;    }} /*#gcc test.c -o test#./test 192.168.161.12 192.168.161.0 255.255.255.0#this ip is in subnet*/

0 0
原创粉丝点击