pcaplibを使用して、現在アクティブなインターネット接続のパケットを監視しようとしています。しかし、現在アクティブなインターネット接続を見つける方法がわかりません。pcap_findalldevs()
利用可能なネットデバイスのリストが返されることはわかっています。ただし、ユーザーはen0、en1、またはそれらを介したVPN接続を使用する場合があります。現在のインターネット接続を見つけるにはどうすればよいのでしょうか。また、インターネット接続が変更されたときに通知を受け取るにはどうすればよいですか。
1 に答える
1
OS X (または他の多くのオペレーティング システム) には、どのインターフェイスが「現在のインターネット接続」であるかを明示的に示すものはありません。
最も近いものは、デフォルト ルートのインターフェイスです。それを行うコードがありますが、少し複雑です。
すべての場合ではないにしても、ほとんどの場合におそらく正しい答えが得られるやや簡単な方法は、出力を取得して、AF_INET または AF_INET6 アドレスを持つ最初のインターフェイスを探すことです (任意pcap_findalldevs()
のアドレスを持つ最初のインターフェイスを探すだけではありません)。 OS X および *BSD のように、リンク層アドレスを含めることができます) であり、PCAP_IF_LOOPBACK が設定されていません。
于 2012-09-28T19:45:58.503 に答える