如何使用IPAddress和IPv4Mask获取IP地址范围?

2024-04-18

我试图在 C#/.NET 2.0 中完成以下任务:

给定一个 IPAddress 对象(例如 192.168.127.100)和另一个包含 IPv4Mask/子网掩码的 IPAddress 对象(例如 255.255.248.0),我应该能够计算 IP 地址范围的开始和结束。

(是的,我正在尝试通过子网上的一系列地址进行 for 循环。)

理论上,我应该能够对 IPAddress 和 SubnetMask 进行按位与运算以获得 IPStart。然后我应该能够对 IPStart 和反转(非)子网掩码执行按位异或,以获得 IPEnd。

IPAddress 对象提供了将地址输出为“long”或“byte[]”(字节数组)的方法。

对 long 执行按位运算(因为它是有符号的?)会产生无效结果。我似乎无法对 IPAddresses 作为字节数组执行按位运算。

EDIT-1:好的,循环遍历数组中的每个字节并执行按位 AND、NOT 和 XOR(在每种情况下)都会得到正确的结果。

我遇到的下一个问题是,在将 byte[] 数组转换为 UInt32 或 long 后,我无法轻松执行 for 循环。因此,第一个值可以正常工作,但是将 uint/long 加一会使 IP 地址从 192.168.127.0 增加到 193.168.127.0 -- 看来在 byte[] 数组转换为 uint/long 后,字节被反转。因此,没有简单的方法可以从 IPStart 递增到 IPEnd。

大家有什么建议吗?


一起抓取两个 byte[] 数组,对每个字节对执行按位比较,并将结果放入第三个 byte[] 数组中作为范围开始。您可以抓取网络地址 byte[] 数组并反转每一位以生成通配符掩码(如您所说,反转子网掩码),然后使用通配符掩码代替子网掩码重复之前的过程来计算范围结束。另请记住,该范围中的第一个值是子网网络地址,最后一个值是广播地址,因此这两个地址不在实际的主机地址范围内。以下是分步摘要中的示例:

Address:   192.168.127.100       11000000.10101000.01111 111.01100100
Netmask:   255.255.248.0 = 21    11111111.11111111.11111 000.00000000
Wildcard:  0.0.7.255             00000000.00000000.00000 111.11111111
=>
Network:   192.168.120.0/21      11000000.10101000.01111 000.00000000
Broadcast: 192.168.127.255       11000000.10101000.01111 111.11111111
HostMin:   192.168.120.1         11000000.10101000.01111 000.00000001
HostMax:   192.168.127.254       11000000.10101000.01111 111.11111110
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用IPAddress和IPv4Mask获取IP地址范围? 的相关文章

  • 如何在C++中生成非常大的随机数

    我想使用 C 生成 0 2 64 范围内的非常大的随机数 我已经使用了 rand 函数 但它没有生成非常大的数字 有人可以帮忙吗 使用c 11 使用标准c 11的随机库 http en cppreference com w cpp nume
  • 什么定义了类型的大小?

    ISO C 标准规定 sizeof char lt sizeof short lt sizeof int lt sizeof long 我在 BIT Linux mint 19 1 上使用 GCC 8 大小为long int is 8 我正
  • 采用 std::vector 或 std::array 的模板函数

    我有一个函数 当前接受 2 个向量 其中可以包含任何普通的旧数据 template
  • 在 WCF 上重用我的 PagedList 对象

    问题 我有一个自定义集合PagedList
  • Boost MPI 在监听列表时不会释放资源?

    这是一个后续问题如何释放 boost mpi request https stackoverflow com questions 44078901 how do i free a boostmpirequest 我在监听列表而不是单个项目时
  • 如何使用c#从数据桶中获取所有文档?

    如何获取数据桶中的所有文档 我尝试过一个示例 但我只能获得一个特定的文档 这是我的代码 CouchbaseClient oclient oclient new CouchbaseClient vwspace data bucket name
  • 检测反射 DLL 注入

    在过去的几年中 恶意软件 以及一些渗透测试工具 如 Metasploit 的 meterpreter 负载 已经开始使用反射 DLL 注入 PDF http www harmonysecurity com files HS P005 Ref
  • 模板与非模板类,跨编译器的不同行为

    我在一些应用程序中使用编译时计数器 它确实很有用 昨天我想用 gcc 编译一个程序 我之前使用的是 msvc 并且计数器的行为在模板类中发生了变化 它在模板类中不再工作 过于简化的代码 Maximum value the counter c
  • 检查两个函数或成员函数指针的签名是否相等

    我编写了一些代码来检查自由函数的签名是否等于成员函数的签名等 它比较提取的返回类型和函数参数 include
  • 冒号在c中起什么作用?

    我在课堂上得到了这个例子 但我不确定它的作用 我知道冒号添加了一个位字段 但我仍然不确定这个问题 a b gt 0 3 1 运算符称为条件运算符 If b值为 gt 0 价值3被分配给a否则值1被分配给a 以 Kernighan Ritch
  • linq where 子句和 count 导致 null 异常

    除非 p School SchoolName 结果为 null 否则下面的代码将起作用 在这种情况下 它会导致 NullReferenceException if ExistingUsers Where p gt p StudentID i
  • 如何禁用基于 ValidationRule 类的按钮?

    如何禁用基于 ValidationRule 类的 WPF 按钮 下面的代码可以很好地突出显示 TextBox
  • 在 C# .NET 中对非 ASCII 字符进行编码

    我想向我的应用程序发送的电子邮件添加自定义标头 标头名称只能包含 ASCII 字符 但对于值和用户可能会输入 UTF 8 字符 我必须对它们进行 Base64 编码 此外 我还必须将它们解码回 UTF 8 以便在 UI 中向用户显示它们 最
  • 意外的 const 引用行为

    include
  • 展开 std::reference_wrapper 的成本

    Given include
  • 如何通过代理将套接字连接到http服务器?

    最近 我使用 C 语言编写了一个程序 用于连接到本地运行的 HTTP 服务器 从而向该服务器发出请求 这对我来说效果很好 之后 我尝试使用相同的代码连接到网络上的另一台服务器 例如 www google com 但我无法连接并从网络中的代理
  • 强制函数调用的顺序?

    假设我有一个抽象基类 并且我想要一个必须由派生类实现的纯虚方法 但我想确保派生方法以特定顺序调用函数 我可以做什么来强制执行它 I E base class virtual void doABC 0 virtual void A 0 vir
  • Asp.Net Core 中的 SSL 不起作用

    我从 Visual Studio 创建了一个简单的 Web 应用程序Web Application Net Core 具有个人用户帐户授权的模板 然后 我启用了 SSLProject gt MyProject Properties 将带有
  • 在 C# 中使用自定义千位分隔符

    在显示字符串时 我尝试不使用 字符作为千位分隔符 而是使用空格 我想我需要定义一种自定义文化 但我似乎做得不对 有什么指点吗 例如 将 1000000 显示为 1 000 000 而不是 1 000 000 no String Replac
  • 如何通过API退出Win32应用程序?

    我有一个使用 Win32 API 编写的 C Win32 应用程序 我希望强制它在其中一个函数中退出 有没有类似的东西Exit or Destroy or Abort 类似的东西会终止它吗 哎呀呀呀呀呀呀 不要做任何这些事情 exit 和

随机推荐

  • Android 在其他设备上共享显示

    我正在努力与通过 WiFi 连接的多个表 全部有根 共享平板电脑显示屏 我正在使用以下方法 全部在一个线程内 1 我截屏 Process sh Runtime getRuntime exec su null null OutputStrea
  • 涵盖 .NET 中的 TDD、DDD 和设计模式的书籍

    我想要一本能够真正让我全面了解使用 C TDD ASP NET MVC DDD 和设计模式 例如存储库模式 的现代 ASP NET 开发的书 我非常擅长 C 和 ASP NET MVC 但想填补空白 如果您对涵盖这些主题的一两本书有很好的体
  • 如何更改 graphviz 的默认字体大小?

    我使用 doxygen graphviz 来记录我的代码 graphviz 在生成图像方面做得很好 有什么方法可以更改 graphviz 的默认字体大小吗 默认值为 14 但我想使用 12 更改单个元素 例如节点 子图 边缘等 的字体大小确
  • 具有重复参数(可变参数)的磁铁模式

    是否可以使用磁铁图案 http spray io blog 2012 12 13 the magnet pattern 与可变参数 object Values implicit def fromInt x Int Values implic
  • getattr/setattr/hasattr/delattr 线程安全吗?

    看这个单例实现 if not hasattr Singleton instance with Singleton instance lock if not hasattr Singleton instance Singleton insta
  • Maven 父项目自动化

    我有这个结构 child C 家长 A child B 如果我尝试在没有父级的情况下安装子级 B maven 会抛出一个错误 我知道按照惯例我应该将父级安装在我的存储库中 但是有没有办法让某人拉取子级并在安装过程中安装自动父辈 编辑 我要尽
  • 链接器如何处理跨翻译单元的相同模板实例化?

    假设我有两个翻译单元 foo cpp void foo auto v std vector
  • ant、jar 文件和类路径哦天哪

    我正在尝试重新构建我的构建技术来创建依赖于常见的第 3 方 jar 文件的 Java jar 文件 GlazedLists Apache Commons 等 我一直将它们全部放入 Java JRE dir lib ext 中 这样 JRE
  • React-testing-library 未从样式表渲染计算样式

    基本场景是这样的 我有一个组件width 100 正如样式表中所定义的 因此它应该保留其父组件的宽度 我想计算组件的宽度并将其应用到我的子组件 因为我通过渲染它createPortal我希望它们的宽度相同 这在浏览器中有效 然而 在我的测试
  • 在 WebAPI 中的模型上使用可序列化属性

    我有以下场景 我正在使用 WebAPI 并根据模型将 JSON 结果返回给消费者 我现在有额外的要求 将模型序列化为 base64 以便能够将它们保存在缓存中和 或将它们用于审计目的 问题是当我添加 Serializable 属性到模型 因
  • 检查 Linq-to-xml 中结果是否存在

    我正在使用 Linq to XML 进行简单的 此用户是否已注册 检查 此处没有安全性 只是为桌面应用程序创建注册用户列表 如何处理这样的查询结果 var people from person in currentDoc Descendan
  • 将图像添加到 RichText 元素

    我正在努力实现以下目标 为了实现这一点 我使用富文本 使用它我可以添加多个具有不同样式的文本 但我不知道如何将图像添加到此文本范围 也许还有其他一些因素 您不需要第三方库来实现此目的 在最新的稳定版本中 Flutter 引入了WidgetS
  • Python 解包格式字符串的参数列表

    我有一个根据用户输入动态创建的格式字符串 我正在列表中收集格式字符串的参数 我想知道如何在格式字符串的末尾解压它们 我看到了一些似乎与此相关的问题 但我对 Python 很陌生 我似乎无法将他们的解决方案应用于我的案例 我想做的事情的想法是
  • Bootstrap 4添加垂直分隔管

    您好 我正在尝试在导航链接之间添加一些分隔符 但它不起作用 我尝试添加 nav link after content 但它不起作用或显示在左侧 这是我的代码
  • Angular 6 ag-grid单元格渲染器点击功能

    所以我正在尝试设置 ag grid 但我无法让一件事发挥作用 我想要一个关于行动的专栏 然后我希望它有一个链接或按钮来触发组件文件中的方法 对于列 def 我有以下内容 我究竟做错了什么 headerName Actions cellRen
  • 如何使用(ruby)机架中间件组件设置 cookie?

    我正在为 Rails 应用程序编写一个机架中间件组件 该组件需要有条件地设置 cookie 我目前正在尝试设置cookies 从谷歌搜索看来这应该有效 class RackApp def initialize app app app end
  • 用于 PHP 开发的 Eclipse PDT 与 NetBeans [已关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 对于 PHP 开发 Eclipse PDT 与 NetBeans 相比如何 我刚刚买了一台装有 Windows 7 的新电脑 我开始设置
  • 当我读取本地文件时,Ajax 不工作

    好吧 我连续两天都无法解决这个问题 这个例子在这里 http www w3schools com ajax tryit asp filename tryajax xml2 http www w3schools com ajax tryit
  • 保护在 MacOS 上 Docker 中的 0.0.0.0 本地运行的 Flask/Celery 应用程序的本地主机端口

    我的应用程序有一个 Flask 后端和一个 Angular Electron 前端 该应用程序在 Mac Catalina 上本地运行 Flask Celery 和 Redis 位于单独的 docker 容器中 而前端位于 Docker 外
  • 如何使用IPAddress和IPv4Mask获取IP地址范围?

    我试图在 C NET 2 0 中完成以下任务 给定一个 IPAddress 对象 例如 192 168 127 100 和另一个包含 IPv4Mask 子网掩码的 IPAddress 对象 例如 255 255 248 0 我应该能够计算