如何判断两个ip是否在同一个子网上? 唯一的输入是IP地址和子网掩码! 什么是最优方法,使用C/C++来计算两个ip是否具有相同的子网?比较两个ip子网
比较两个ip子网
回答
bool checkForSubnetEquality(in_addr_t ipA, in_addr_t ipB, uint32_t subnetMask) {
return (ipA & subnetMask) == (ipB & subnetMask);
}
我请求你请在你的答案中添加更多的上下文。仅有代码或仅链接的答案很难理解。如果您可以在帖子中添加更多信息,它可以帮助提问者和未来的读者。 – RBT
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;
}
为这个任务分配内存是绝对不必要的!我认为'!='比'^'具有更高的优先级,所以这甚至似乎是错误的 – user45891
你是绝对正确的''=''运算符对于同样的事情来说短得多。我被包裹在一个狭窄的焦点中,我完全错过了'如何使用平等'...... –
但我喜欢使用'BYTE'数组而不是更大的类型。 –
您可以使用自己的面膜同时适用于IP的“异或”操作,之后他们进行比较。如果它们是相同的,那么两个IP地址在同一个子网中。
让我们来看看172.16.2.4/255.255.0.0和172.16.1.69/255.255.0.0 'xor'后,你会得到两个地址的'172.16.0.0',所以他们在同一个子网。
问候。
- 1. 比较两个ip与C#
- 2. IP子网 - 两个子网?
- 3. 比较两个网址
- 4. 比较两个网址(iPhone)
- 5. 如何比较两个不同的IP?
- 6. PHP:比较两个句子
- 7. 比较两个原子的整数Qt5
- 8. 比较MySQL中的两个子查询
- 9. 比较两个NSArrays
- 10. 比较两个CGRects
- 11. 比较两个DataFrames,
- 12. 比较两个NSManagedObjects
- 13. 比较两个QAbstractItemModels
- 14. 比较两个NSStrings
- 15. 比较两个CGPDFDictionary
- 16. 比较两个datagridview
- 17. 比较两个表
- 18. 比较两个NSMutableArray
- 19. 比较两个UIImages
- 20. 比较两个FluentWebElement
- 21. 比较两个ArrayList
- 22. 比较两个HTML
- 23. 比较两个UIImage
- 24. 比较两个bsts
- 25. 比较两个3Dmesh
- 26. 比较两个NSMutableDictionaries
- 27. 比较两个JSON
- 28. 比较两个nsdatecomponent
- 29. 比较两个aspxCalenders
- 30. 比较两个SDL_point?
你在参加考试吗? – rekire
将掩码应用到IP地址并查看它们是否相同? – AntonH
谢谢元帅!那么你的意思是计算两个网络之间的两个ip或_xor_之间的异或结果(ip _and_ subnet) – HLM