次のセットアップを検討してください。 LANインターフェイスとWiFiインターフェイス(新しいノートパソコンの標準)を備えたWindows PC。各インターフェイスは、ネットワークに接続または切断されている可能性があります。アダプターのどれがインターネットに接続されているかを判断する方法が必要です。具体的には、両方が異なるネットワークに接続されている場合は、インターネットに接続されていて、もう1つは接続されていません。どのNICがインターネットに接続されているかはどうやって分かりますか?
私の現在の解決策は、IPHelperの "GetBestInterface"機能を使用し、IPアドレス "0.0.0.0"を提供することです。
他にもこの問題の解決策がありますか?
答えのいくつかの後、私は手の込んだてみましょう:
- 私はと結合するアダプターを選択しなければならない製品を持っているので、私はこれを必要とします。私は、製品が動作するネットワークまたはホストの設定を制御する方法がないため、可能な限り少ない想定で、できるだけ堅牢なソリューションが必要です。
- これは製品の一部であるため、コードでこれを行う必要があります。
@Chris Upchurch:これにより、google.comが起動している(通常は問題ありません)と、pingを許可するためにインストールされているパーソナルファイアウォールに依存しています。
@Till:スティーブムーンのように、内部ネットワークの設定について多くの仮定をするため、アダプタのアドレスに依存するのは危険です。
@Steve Moon:ルーティングテーブルを見てみるのはいい考えですが、ルーティングロジックを自分で適用するのではなく、上記のように "GetBestInterface"を使用しようとしています。私はそれがあなたの答えに概説したとおりであると信じていますが、私は本当にわかりません。自分の "ルーティングロジック"を実装したくない理由は、もっとハードコアなネットワークの人々が書いてテストしたライブラリ/ APIを使うよりも、間違ってしまう可能性が高いからです。