如何判斷兩個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