首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较两个ip子网

比较两个ip子网
EN

Stack Overflow用户
提问于 2017-01-02 19:28:48
回答 3查看 1.7K关注 0票数 2

如何判断两个ip是否位于同一子网上?唯一的输入是ip地址和子网掩码!如果两个ip拥有相同的子网,那么使用C/C++进行计算的最佳方法是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-01-02 20:29:29

代码语言:javascript
复制
bool checkForSubnetEquality(in_addr_t ipA, in_addr_t ipB, uint32_t subnetMask) {
   return (ipA & subnetMask) == (ipB & subnetMask);
}
票数 2
EN

Stack Overflow用户

发布于 2017-01-02 20:18:22

代码语言:javascript
复制
typedef unsigned char BYTE;

Bool CheckForSubnetParity(
BYTE[] _In_ iPAddress1, 
BYTE[] _In_ iPAddress2, 
BYTE[] _In_ subNetMask
) {

      BYTE[] NetworkPrefix1 = new BYTE[4];
      BYTE[] NetWorkPrefix2 = new BYTE[4];
      Bool Result = true;

      for ( int x = 0; x < 4; x++) 
      {
          NetworkPrefix1[x] = iPAddress1[x] && subNetMask[x];
          NetworkPrefix2[x] = iPAddress2[x] && subNetMask[x];
          if ( NetworkPrefix1[x] != NetworkPrefix2[x] ) 
          {
              Result = false;
          }
      }

      return Result;
   }
票数 1
EN

Stack Overflow用户

发布于 2017-01-17 09:06:52

您可以将“xor”操作应用于两个IP,使用它们的掩码并在此之后进行比较。如果它们是相同的,那么两个IP地址在同一个子网中。

让我们看看172.16.2.4/255.255.0.0和172.16.1.69/255.255.0.0之后的'xor‘,您将得到'172.16.0.0’的两个地址,因此他们在同一个子网。

致以问候。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41432327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档