2

私は C# でアプリケーションを作成しています。機能の 1 つは、接続されているネットワークに基づいてさまざまなアクションを実行する必要があります。

例えば; PC がホーム ネットワークのネットワーク ケーブルに接続されている場合は MethodA を実行する PC がホーム ネットワークに接続されているが、Wifi が接続されている場合は MethodB を実行する PC が建物 1 のオフィス ネットワークに接続されている場合は MethodC を実行する PC が建物 2 のオフィス ネットワークに接続されている場合は MethodD を実行する PC が友人に接続されている場合ホーム ネットワークで MethodE を実行する

ここで、異なるネットワークをどのように区別しますか?

4

2 に答える 2

0

マシンがワイヤレスまたはケーブルを介してローカルルーターに接続されているかどうかを確実に検出できると思います。

ただし、それ以上に進むと、多くの問題が発生すると思います。

Vista以降を使用している場合は、使用中のネットワークの「名前」を取得できるはずです。ただし、これは適切に構成する必要があり、エンドユーザーがジャックしないようにする必要があります。

それを除けば、あなたは確かにあなたに割り当てられたIPアドレス範囲をチェックすることができます...しかしそれは建物1と2が異なる範囲を発行し、それらの範囲がホームネットワークによって発行されたものと同じではないことを前提としています。さらに、ホームネットワークとフレンドハウスネットワークが同じ内部範囲にある可能性があります。

アプリケーションは、使用するメソッドをユーザーに尋ねたり、メソッドの名前をユーザーに与えたり、他の種類の質問をしてヒントを与えたりする方がはるかに優れていると思います。

于 2012-10-08T21:47:31.860 に答える
0

これを理解するために、ネットワークに関する情報を使用します。ワイヤレスを使用している場合は、有線 nic に IP がないことがわかります。次に、IP スキームに基づいて、現在地を推測できます。ネットワークに関するいくつかの情報を知っておく必要があります。

たとえば、仕事でサブネット範囲内の IP が割り当てられ10.1.0.1-40、ホーム ネットワークから割り当てられた場合192.168.1.2-255、その情報を使用してアプリケーションの動作を指示できます。

残念ながら、これはかなり疎結合であり、ルーティング スキームが変更されると、アプリケーションが壊れる可能性があります。この種の設定を構成可能にします.IPスキームを「場所」にマップする構成を作成し、それをあなたの行動の基礎として使用します.

ネットワークを Windows の場所にマップしている場合は、この質問の回答を使用して、.NET で「ネットワークの場所」を確認するにはどうすればよいですか? .

于 2012-10-08T21:39:45.107 に答える