c# - 使用 C# 检查 IP 地址与一系列值的最简单方法

标签 c# asp.net ip

我们正在编写一项功能,允许管理员阻止/允许 IP 地址范围。

用 C# 可以很容易做到这一点吗?

我正在考虑查看每个数字[这里].[这里].[这里].[这里],然后用范围进行数学计算,看看每个数字是否在两者之间?

这适用于标准 ip v4 地址吗?

最佳答案

我会将它们转换为整数,然后比较整数。但什么是正确的取决于您如何定义范围。

UInt32 Ip4ToInt(string ip)
{
  UInt32[] parts=ip.Split('.').Select(s=>UInt32.Parse(s)).ToArray();
  if (parts.Length != 4)
    throw new ArgumentException("InvalidIP");
  return (parts[0]<<24) | (parts[1]<<16) | (parts[2]<<8) | parts[3];
}

例如,1.1.1.99 应该属于 1.1.1.1 - 1.1.2.2 范围吗?当比较每个组时它不是,当比较整数时它是。

关于c# - 使用 C# 检查 IP 地址与一系列值的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4438531/

相关文章:

asp.net - 如何加速 Visual Studio Webserver (Cassini)?

smtp - 如何检查服务器是否发送垃圾邮件?

Java:如何检查计算机是否已经被更改

c# - 我可以在没有Unity3D编辑器的情况下创建assetbundle吗

ASP.NET Web 窗体 : Master Page & CSS File

c# - 子列表包含部分值的 Linq

asp.net - 在ASP.NET Web应用程序中未单击Application_Start

linux - 在中间节点重新组装 IP

c# - 使用SSIS将文件上传到共享点文档库时获取远程服务器返回错误: (403) Forbidden.错误

c# - 统一移动相机的问题