【C语言实现】根据子网掩码来判断两个IP是否在一个子网

编译:

gcc isSameSubnet.c -o isSameSubnet -g -Wall

自测:

./isSameSubnet 192.168.1.1 192.168.2.2 255.255.0.0
result = same
 

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

#include <netinet/in.h>


//根据IP地址去本地查询对应的掩码
char* getMaskByIP(const char* szIPAddr)
{
    static char szNetMask[20] = {};
    
    char* szNetMaskDesc = "netmask";
    
    FILE* netinfo = popen("/sbin/ifconfig", "r");
       
    if(!netinfo){
        puts("error while open pipe");
        exit(1);
    }  
 
    char  strTmp[200];
    char* strMaskBegin = 0;
    char* strMaskEnd   = 0;

    while( fgets(strTmp, sizeof(strTmp) - 1, netinfo) != NULL )
    { 
        if(strstr(strTmp, szIPAddr))
        {
            strMaskBegin = strstr(strTmp, szNetMaskDesc);
            if(!strMaskBegin)
            {
                got
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值