在好例子网,分享、交流、成长!
<<

c# 判读某个ip是否在指定ip区间

using System;
using System.Net;

public class Program
{
    public static void Main()
    {
        string startIP = "210.026.168.000";
        string endIP = "210.026.175.255";
        string targetIP = "210.026.172.100";

        IPAddressRange ipRange = new IPAddressRange(IPAddress.Parse(startIP), IPAddress.Parse(endIP));
        IPAddress targetIPAddress = IPAddress.Parse(targetIP);

        bool isInRange = ipRange.Contains(targetIPAddress);

        Console.WriteLine("当前IP地址: " + targetIPAddress);
        Console.WriteLine("是否在此区间: " + isInRange);
    }
}

public class IPAddressRange
{
    private readonly UInt32 _startIP;
    private readonly UInt32 _endIP;

    public IPAddressRange(IPAddress startIP, IPAddress endIP)
    {
        _startIP = IPToUInt32(startIP);
        _endIP = IPToUInt32(endIP);
    }

    private UInt32 IPToUInt32(IPAddress ipAddress)
    {
        byte[] ipBytes = ipAddress.GetAddressBytes();
        if (BitConverter.IsLittleEndian)
        {
            Array.Reverse(ipBytes); // Reverse the bytes to match Little Endian byte order
        }
        return BitConverter.ToUInt32(ipBytes, 0);
    }

    public bool Contains(IPAddress ipAddress)
    {
        UInt32 ip = IPToUInt32(ipAddress);
        return ip >= _startIP && ip <= _endIP;
    }
}

在上述代码中,我们首先创建了一个IPAddressRange类,该类接受开始IP地址和结束IP地址作为参数。然后,我们使用ipRange.Contains(targetIPAddress)来判断目标IP是否在给定的IP范围内。

注意,IP地址以字符串形式传入时,要确保不带前导零。在上述示例中,我们将 IP 地址 "210.026.168.000" 和 "210.026.175.255" 转换为 IPAddress 类型时,并且进行了反转操作以匹配 BigInteger 字节顺序。

请注意,如果你使用的是 IPv6 地址,需要对代码进行适当的调整。这段代码只适用于判断 IPv4 地址是否在特定范围内。

标签: 是否 C# IP

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

报警