c++实现ip是否在同一个网段的判断

2023-05-16

废话不说直接贴代码:

ip的数据结构

typedef struct IP_Struct{
	//ip地址划分后各个域的值
	struct IpAdress_Struct
	{
		int first;  
		int second;  
		int third;  
		int forth;
	}IpAdress,*pIPAdress;
	//ip地址
	char szIPAdress[MAX_PATH];
	//子网掩码
	char szIPMask[MAX_PATH];
	IP_Struct()
	{
		strcpy(szIPAdress,"");
		strcpy(szIPMask,"");
	}
	IP_Struct(char szIPAdress[],char szIPMask[])
	{
		strcpy(this->szIPAdress,szIPAdress);
		strcpy(this->szIPMask,szIPMask);
	}
}IP,*pIP;


判断ip是否合理及获取ip各个域的值

bool JudgeIp(char *szIP,IP_Struct::IpAdress_Struct *ipAdress)
{
	if (!szIP) return false;
	int index=0;
	int first=0,second=0,third=0,forth=0;   
	std::string ip=std::string(szIP);
    first=atoi(&ip[index]);  
    if (first>255)  
        return false;
	if (ipAdress)
		ipAdress->first=first;
    
    index++;  
    index=ip.find_first_of('.',index);  
    second=atoi(&ip[++index]);  
    if(second>255)  
        return false;  
	if (ipAdress)
		ipAdress->second=second;
    
    index++;  
    index=ip.find_first_of('.',index);  
    third=atoi(&ip[++index]);  
    if(third>255)  
        return false;  
	if (ipAdress)
		ipAdress->third=third;

    index++;  
    index=ip.find_first_of('.',index);  
    forth=atoi(&ip[++index]);  
    if(forth>255)  
        return false;  
	if (ipAdress)
		ipAdress->forth=forth;
    
    return true;  
}

判断是否同一网段

//-1 indicates ip格式错误,0表示不同网段,1表示同网段
int IsSameNetworkSegment(char *szIPAdress,char *szMask,char *szIPAdresss1)
{
	if (!szIPAdress||!szMask||!szIPAdresss1) return false;
    IP_Struct::IpAdress_Struct ip,ip1,mask;
    if (JudgeIp(szIPAdress,&ip)&&JudgeIp(szIPAdresss1,&ip1)&&JudgeIp(szMask,&mask))
    {
    	    ip.first=ip.first & mask.first;  
            ip.second=ip.second & mask.second;  
            ip.third=ip.third & mask.third;  
            ip.forth=ip.forth & mask.forth;  
  
            ip1.first=ip1.first & mask.first;  
            ip1.second=ip1.second & mask.second;  
            ip1.third=ip1.third & mask.third;  
            ip1.forth=ip1.forth & mask.forth;  
  
            if(ip.first==ip1.first&&ip.second==ip1.second&&ip.third==ip1.third&&ip.forth==ip1.forth)  
                return 1;
            else  
                return 0;
	}
	else
	    return -1;
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c++实现ip是否在同一个网段的判断 的相关文章

  • virtualbox ubuntu桥接网卡不能上网,重启后不能上网问题

    设置完桥接网卡后 sudo vim etc network interfaces ip根据宿主机ip设置 编辑虚拟机网络配置文件 内容如下 interfaces 5 file used by ifup 8 and ifdown 8 auto
  • STM32 模拟IIC驱动MS5607气压传感器调试记录

    标题 STM32 模拟IIC驱动MS5607调试记录 因项目需求 xff0c 需使用MS5607的作为检测气压 xff0c 再此写下自己遇见的问题以及调试记录 硬件原理图如下 xff1a IIC接口总线使用了气压传感器 xff0c SHT3
  • 单片机学习 2-蜂鸣器

    蜂鸣器 蜂鸣器介绍 压电式蜂鸣器 xff08 无源蜂鸣器 xff09 发出声音必须提供一定频率的脉冲信号 1 5 5000HZ 频率周期固定 xff0c 高电平占用周期内时间不同 xff0c 音调不同 xff1b 高电平占用比不变 xff0
  • Linux配置网桥

    一 创建网桥配置文件 cp etc sysconfig network scripts ifcfg eth0 etc sysconfig network scripts ifcfg br0 二 配置网卡 设置网络为静态IP vi etc s
  • “野火FreeRTOS教程”第9章知识点总结-空闲任务与阻塞延时

    前言 在第7章我们知道在创建任务并启动任务调度器后 xff0c 当前任务控制块是指向第一个任务 xff08 即pxCurrentTCB 61 amp Task1TCB xff09 xff0c 然后会产生SVC中断 xff0c 将pxCurr
  • XShell+Xmanager实现在XShell中显示远程服务器的图形界面

    最近开始学习机器学习的知识 xff0c 迫切的需要用到Linux环境 xff0c 但是因为虚拟机用着电脑会变卡 xff0c 而且自己有台式 43 笔记本 xff0c 所以自己想要创建一个随时随地多设备可以用的实验环境 因此想到了搭建一个Li
  • MFC CStringArray使用方法

    xfeff xfeff MFC CStringArray使用方法 2014 07 04 10 03 34 转载 标签 xff1a vc 分类 xff1a Visual C CArray arrroads CStringArray road
  • 致我们终将逝去的2014

    一眨眼 xff0c 2014年的最后一张日历即将撕去 xff0c 迎来的是面貌全新的2015 回首2014 xff0c 回首这一年所经历的一切 xff0c 感觉那么近又那么远 下面将从几个方便总结自己的2014 xff1a 一 专业方面 x
  • 计算机基础知识之-线程&进程

    线程 amp 进程 死锁 多线程以及多进程改善了系统资源的利用率并提高了系统 的处理能力 然而 xff0c 并发执行也带来了新的问题 死锁 死锁是指两个或两个以上的进程 xff08 线程 xff09 在运行过程中因争夺资源而造成的一种僵局
  • linux下mysql访问速度缓慢并且ssh连接缓慢

    最近发现ssh连接的时候却很慢 xff0c ping的速度非常好 xff0c 让人误以为是ssh连接不上 分析结果 xff0c 主要原因为 xff1a DNS的解析IP导致 xff0c 可分别使用以下几种分析处理方式 1 linux ssh
  • vmware安装centos8之网络配置

    1 下载vmware 2 新建虚拟机 3 网络配置 3 1 查看自己主机ip 网关等信息 xff0c 例如个人主机信息如下 3 2 设置vmware网络连接 vmware gt 我的计算机 gt 设置 gt 网络适配器 gt 网络连接 gt
  • Ubuntu连上wifi后,能内网通讯,但访问不了外网的问题解决办法

    最近用Jetson Nano遇到了这样一个问题 系统时间一直定格在了2月7日的晚上 每次重启 xff0c 就会回到那个时间 经过一番检测 xff0c 发现是因为连不上外网 xff0c 导致不能同步时间 然后按照常规方法 xff0c 检测DN
  • simplegui自定义字库——UTF8版

    写作背景 日前 xff0c 笔者在学习simplegui xff0c 制作了一套适用于simplegui的自定义字库 UTF8版 在和群友交流的时候感觉自己讲不清楚 xff0c 经过分析是自己还没能深入理解相关知识 xff01 xff01
  • StarWind Software Image Converter:虚拟机镜像转换工具,可将 img 文件转换为 VMware虚拟机 Vmdk 文件

    然后添加官网下载解压好的 img文件 xff1a
  • 工作站启动不起来的解决方案

    我是一个运维小白 xff0c 今天遇到了公司工作站启动不起来的情况 工作站是DELL的 xff0c 尝试强制启动了好几次 xff0c 都没有启动起来 拔了电源 xff0c 静置一段时间后 xff0c 再插上电源 xff0c 再启动工作站 x
  • VNC连不上服务器,无法远程控制

    我是在服务器上添加了分帐户 xff0c 然后使用vnc连接 xff0c 遇到了vnc连不上的问题 有好几个问题导致这个原因 xff0c 这里说两个我遇到的 xff1a 第一 xff1a vnc连接失败 xff0c 此时 xff0c 可以试试
  • UCOS III移植到STM32F407过程

    UCOS III移植步骤 第一步 首先打开找到Mirium的官网 找到下载区域 按照MCU制造商来查找 看图 来下载对应的UCOS III系统 由于官方并没有直接对stm32f407系列的移植 所以我们就在官网上找到和stm32f407相近
  • Android 7.0手机打开相机或相册报错解决方案

    原文地址 xff1a http www jianshu com p edec55192944 在android 7 0以上的手机上打开相机 相册会报如下错误 android os FileUriExposedException expose
  • Python爬虫:用BeautifulSoup进行NBA数据爬取

    爬虫主要就是要过滤掉网页中无用的信息 xff0c 抓取网页中有用的信息 一般的爬虫架构为 xff1a 在python爬虫之前先要对网页的结构知识有一定的了解 xff0c 如网页的标签 xff0c 网页的语言等知识 xff0c 推荐去W3Sc

随机推荐

  • Python 不带参数和带参数装饰器

    链接1 xff1a https blog csdn net u010358168 article details 77773199 链接2 xff1a https blog csdn net qq 34788903 article deta
  • VLAN网络支持ipv6的交换机和虚机配置

    VLAN支持ipv6的交换机和虚机配置 前言一 创建VLAN网络并配置交换机1 规划并在OpenStack上创建 VLAN网络2 在交换机上配置VLAN 二 Ubuntu虚机配置1 创建虚机2 在OpenStack上查看port3 登录虚机
  • MyBatis-Plus-Generator 3.5.2 配置详解

    官方用例 所需MAVEN依赖 span class token tag span class token tag span class token punctuation lt span dependencies span span cla
  • 用keras搭建一个简单的一维卷积神经网络

    编程环境 xff1a python 3 6 8 tensorflow 1 12 3 点击下载离线包 matplotlib 3 1 2 numpy 1 17 4 数据集说明 xff1a 我所采用的数据集 xff0c 是我自己构建的一个网络流量
  • java中的编码转换(以utf8和gbk为例)

    在正常javaweb开发中经常会发现字符转换的需求 xff0c 会存在中文字符转换乱码的现象 xff0c 如何解决以及其转换原理我至今懵懵懂懂 xff0c 于是专门写了个测试代码进行尝试 xff0c 总算理清了编码 xff0c 先上结论 x
  • ERROR com.alibaba.druid.pool.DruidDataSource - init datasource error, url jdbcmysql

    部署一个开源项目报错 ERROR com alibaba druid pool DruidDataSource init datasource error url jdbcmysql 很明显是数据库连接错误 但排除一下错误后 xff0c 我
  • KVM下的Windows虚拟机盘符扩容

    今天发现工作站上的一个Windows虚拟机的一个盘符没有空间了 xff0c 需要为其进行扩容 探究过程如下 xff1a 1 确认需要调整的盘符对应的文件 2 关闭虚拟机 3 调整存储文件的大小 打开终端 xff0c 进入文件在所目录 xff
  • IDEA lombok包的@Data注解报错找不到符号

    问题描述 xff1a 工程编译报错 java 找不到符号 问题抽象 定位错误可以发现是getter setter的问题 由于采用了 64 Data注解 xff0c 所以优先考虑是lombok的问题 解决方案 首先排除以下可能 lombok插
  • python配合阿里云域名解析实现DDNS功能

    前置工作 安装阿里模块 pip span class token function install span aliyun python sdk core v3 pip span class token function install s
  • linux开机自启服务简单配置

    使用任意方式在 usr lib systemd system路径下新建一个demo service文件并在其中以如下模板编写内容 span class token punctuation span Unit span class token
  • git取消超过范围大文件并重新提交

    问题报错 remote error File db383b59a623629b36cc62dd3917db21c1375cf0 span class token number 690 93 span MB exceeds span clas
  • 基于pyqt的无边框浏览器

    自己写了个基于pyqt的无边框浏览器 xff0c 可以配合源阅读的web看书 xff0c 自用自取 目录结构 xff1a ui ui webview pycall webview y 环境安装 xff1a pip span class to
  • Pycharm默认输入状态是insert状态,选中文字无法直接输入替换或删除

    最近开始学习python xff0c 使用Pycharm编辑器进行学习过程中却发现 xff1a 打开一个新的py文件 xff0c 我的光标处于加粗状态 xff0c 也就是编程软件经常出现的insert插入编辑模式 xff0c 我就点击了一下
  • 输入字体之间的间隔突然变大了

    额 xff0c 这个问题之前也遇到几次 xff0c 后来莫名其妙变好了 我就没深究 最近写代码又出现了这种情况 就是敲了个快捷键 xff0c 就变成 后来发现是IDE的快捷键和输入法快捷键冲突了 解决方法 xff1a 按一下 shift 4
  • 西瓜的JSON笔记

    1 JSON是什么 JSON 指的是 JavaScript 对象表示法 xff08 J ava S cript O bject N otation java xff0c 脚本 xff0c 对象 xff0c 注释 xff09 JSON的特点
  • Windows 下安装 Ubuntu 双系统

    转载自 xff1a Windows 下安装 Ubuntu 双系统 一 准备 xff1a xff08 一 xff09 准备工具 xff1a U盘一个 xff08 请提前备份U盘里面的资料 xff0c 因为后面操作要格式化U盘 xff09 Ub
  • FreeRTOS 互斥信号量和二值信号量对比

    互斥信号量 1 有优先级继承 2 尽量不要在中断中调用 3 xSemaphoreCreateMutex创建后 xff0c 可以直接take使用 二值信号量 1 无优先级继承 2 允许在中断中调用 3 可以当做标志位来使用 4 xSemaph
  • 工作站常见问题处理

    常见问题1 xff1a 系统重启网桥消失 1 现象 公司的工作站自从搬到新地方以来 xff0c 每次关机再启动 xff0c 或重启后 xff0c 都会出现网桥消失的情况 2 分析 查找了网桥和网卡的配置 xff0c 也觉得没有什么问题 xf
  • Ubuntu17 安装ProxyChains4

    span class hljs preprocessor 切换目录 span cd Downloads span class hljs preprocessor 下载 span git clone https span class hljs
  • c++实现ip是否在同一个网段的判断

    废话不说直接贴代码 xff1a ip的数据结构 typedef struct IP Struct ip地址划分后各个域的值 struct IpAdress Struct int first int second int third int