ネットワークトラフィックを監視するために、Cアプリケーションでlibpcap(およびWindowsではwinpcap)を使用しています。接続速度の統計を生成するには、各ネットワークアダプターでアップロードトラフィックとダウンロードトラフィックを区別する必要がありますが、ライブラリで使用されるフィルター式はこれを簡単にサポートしていないようです(つまり、「着信」/「発信」演算子はありません) )。
私が検討したアプローチの1つは、各アダプターのIPアドレスを照会してから、 (src host 1.2.3.4
アップロードを測定するため)やdst host 1.2.3.4
(ダウンロードを測定するため)などのフィルターを使用することです。
私の質問は次のとおりです。
上記のものよりも優れた/単純なアプローチはありますか(各アダプターに同じフィルター式を使用できるようにするものがいいでしょう)?
上記のアプローチが進むべき道である場合、単一のアダプターに複数のIPアドレスが関連付けられている可能性はありますか?私が尋ねる理由pcap_addr
は、単一のアダプター(in struct pcap_if
)のアドレスの詳細を保持する構造体に「next」メンバーがあり、これが可能であることを示唆しているためです。