2017-05-11 5 views
0

私はWindowsとMacプラットフォームの両方で動作するC++でコードを書いています。私はマシンのIPアドレスリストとCIDR形式のIPフィルタのリストを受け入れる機能を書いています。この関数は、マシンのIPがIPフィルターと一致するかどうかをチェックします。IPアドレスマッチングフィルタ機能

たとえば、マシンIP 10.210.177.47とフィルタが10.210.177.1/32の場合 この関数は、10.210.177.47がフィルタの範囲内にあるかどうかをチェックします。 フィルタは、10.210.177.45のようにプレーンなIPアドレスにすることもできます。

WindowsとMacで動作する共通のコードを記述する必要があります。

+0

**あなたがしたこと**、何がうまくいくのか、何が失敗するのか、**元の投稿**で理解できないことをご指定ください。 –

+0

私はIPアドレスの比較にマスクを使用する方法を理解していません。 – user832096

答えて

0

最も簡単な解決策は、マスクの長さをビットマスクに変換することです。例えば。 /8は上位8ビットでネットワークを識別し、下位24ビットでそのネットワーク内のホストを識別します。したがって、24ビット(>>24上左(std::uint32_tとして表される)IPアドレスをシフトすることにより、あなただけのネットワーク部分を保つ10.0.0.0/810.210.177.47ために、それは10葉 - 。。試合を/24ために、それは10.210.177残して - 。不一致を

関連する問題