- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 C#/.NET 2.0 中完成以下任务:
给定一个 IPAddress 对象(比如 192.168.127.100)和另一个包含 IPv4Mask/子网掩码的 IPAddress 对象(比如 255.255.248.0),我应该能够计算出 IP 地址范围的开始和结束。
(是的,我正在尝试通过子网上的一系列地址进行 for 循环。)
理论上,我应该能够对 IPAddress 和 SubnetMask 进行按位与操作以获得 IPStart。然后我应该能够对 IPStart 和反转的(NOT'd)SubnetMask 执行按位异或,以获得 IPEnd。
IPAddress 对象提供了将地址输出为“long”或“byte[]”(字节数组)的方法。
对 long 执行按位运算(因为它是有符号的?)会产生无效结果。而且我似乎无法对作为字节数组的 IP 地址执行按位运算。
EDIT-1:好的,遍历数组中的每个字节并执行按位与、非和异或(在每种情况下)得到正确的结果。
我遇到的下一个问题是,在将 byte[] 数组转换为 UInt32 或 long 后,我无法轻松执行 for 循环。因此,第一个值正常工作,但是将 uint/long 递增一个会使 IPaddress 从 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
关于c# - 如何使用IPAddress和IPv4Mask获取IP地址范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/996848/
目前部署在 Kubernetes 中的服务,通过 Calico BGP 将 Service 与集群外网络打通,并在外部的 nginx 中配置 Service 地址对外进行服务暴露。经过一段时间的观察
如发现here , 有一种新的 kube 服务是 IPVS 并且有很多负载均衡算法。 唯一的问题是我没有找到指定这些算法的位置。 我的理解: rr:循环法->循环调用后端pod lc:最少连接-> 将
我想尝试这种新的代理模式以及它为我们的一些应用程序提供的各种调度程序。到目前为止,我一直无法找到更改默认模式的方法 iptables至 ipvs在 GKE 节点上。 每个人都说通过--proxy-mo
我想在现有集群中为 IPVS 启用 Kube-proxy 模式。目前,它在 IPtables 上运行。如何在不影响现有工作负载的情况下将其更改为 IPVS? 我已经安装了所有必需的模块来启用它。另外,
我正在开发的应用程序作为 Kubernetes 集群中的部署运行。为此部署创建的 Pod 分布在集群中的各个节点上。我们的应用程序一次只能处理一个 TCP 连接,并且会拒绝进一步的连接。目前,我们使用
我是一名优秀的程序员,十分优秀!