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