C# - 在 IP 地址字符串中添加和减去以创建范围

本文关键字:范围 创建 添加 IP 地址 字符串 | 更新日期: 2023-09-27 17:55:57

这是一个

有点奇怪的问题,但我正在寻找一些 c# 代码,它将采用作为字符串提供的 IP 地址并返回给我另一个字符串,该字符串表示包含初始 IP 地址的 IP 地址范围。例如。。。

如果初始字符串是"192.168.1.150"

,那么我需要生成一个值为"192.168.1.149-192.168.1.151"的新字符串。

我知道我可以通过在"."处拆分初始字符串来实现这一点s,然后将第 4 个数字转换为 int,然后减去或加法......但这似乎有点蹩脚,我希望有人能有一个更优雅的解决方案:)

也。。。我也希望它支持 IPv6 地址。

有什么很酷的方法吗?谢谢。

C# - 在 IP 地址字符串中添加和减去以创建范围

老实说,这听起来像是IPv4的最佳方式。得到第四个八位字节 (.150),投射到 int,减去 1 得到范围的开始,加一得到范围的结束。没有比这更简单的了。至于IPv6,谷歌"在c#中添加十六进制数字"。

在我看来,

您必须将地址解析为 4 字节类型变量,并将值加减到其中的第四个。但是你可以把它放在优雅的类中,这将支持你的应用中所有与IP地址相关的功能。在 DDD 中,此模式称为值对象。

您是否意识到您所要求的仅从单个 IP 地址是不可能的?
要查找的 IP 范围取决于几个参数:

  • 网络地址
  • 广播地址
  • 网络掩码

要实际检索IP地址所属的网络范围,您需要(如果我没记错的话)至少两个。有了网络地址和广播地址,网络范围明显。有了网络地址和网络掩码,就可以计算出来。如果您有 IP 地址和网络掩码,这也应该是可能的,但在这种情况下,您最终可能会得到多个可能的解决方案(取决于其他网络的拆分方式 - 它们必须适合两个的幂,但是......

因此,实际上不可能为您提供这样的代码。