次の設定を検討してください: LAN インターフェースと WiFi インターフェースを備えた Windows PC (新しいラップトップの標準)。各インターフェイスは、ネットワークに接続されているか、ネットワークから切断されている可能性があります。どちらのアダプターがインターネットに接続されているかを判断する方法が必要です。具体的には、両方が異なるネットワークに接続されている場合、一方はインターネットに接続されており、もう一方は接続されていません。
私の現在の解決策は、IPHelper の " GetBestInterface " 関数を使用し、それに IP アドレス "0.0.0.0" を提供することです。
この問題に提案できる他の解決策はありますか?
いくつかの回答に続いて、詳しく説明しましょう。
- バインドするアダプターを選択する必要がある製品があるため、これが必要です。製品が実行されるネットワークまたはホストのセットアップを制御する方法がないため、可能な限り仮定を少なくして、可能な限り堅牢なソリューションが必要です。
- これは製品の一部であるため、コードで行う必要があります。
@Chris Upchurch: これにより、google.com が稼働していること (通常は問題ありません) と、ping を許可するためにインストールされている可能性のあるパーソナル ファイアウォールに依存するようになります。
@Till: Steve Moon が言ったように、アダプターのアドレスに依存することは、内部ネットワークのセットアップで多くの仮定を行うため、一種の危険です。
@Steve Moon:ルーティングテーブルを見るのは良い考えのように思えますが、ルーティングロジックを自分で適用する代わりに、上記のように「GetBestInterface」を使用しようとしています。それが何をすべきかは、あなたの答えで概説したとおりだと思いますが、よくわかりません。私が独自の「ルーティング ロジック」を実装することに消極的である理由は、より「筋金入りの」ネットワーク関係者によって作成およびテストされたライブラリ/API を使用する場合よりも、間違っている可能性が高いからです。