2017-05-11 86 views
0

我正在使用C++編寫代碼,該代碼在Windows和Mac平臺上運行。我想寫一個函數,它將接受CIDR格式的機器IP地址列表和IP過濾器列表。該功能將檢查機器IP是否與IP過濾器匹配。IP地址匹配過濾功能

例如。如果機器IP爲10.210.177.47,過濾器爲10.210.177.1/32 該功能將檢查10.210.177.47是否落入過濾器範圍內。 過濾器也可以是簡單的IP地址,如10.210.177.45

我需要編寫一個可以在Windows和Mac上運行的通用代碼。

+0

請指出**你做了什麼**,什麼有效,什麼失敗以及你在**原帖**中不明白的地方。 –

+0

我不明白的是如何在比較IP地址時使用掩碼。 – user832096

回答

0

最簡單的解決方案是將掩碼長度轉換爲位掩碼。例如。 /8使用高8位來標識網絡,使用低24位來標識該網絡內的主機。因此,通過左移超過24位(>>24的IP地址(表示爲std::uint32_t),你只保留網絡部分對於內10.0.0.0/810.210.177.47,離開10 - 。比賽爲/24,它會離開10.210.177 - 沒有匹配