2011-08-16 7 views
4

デスクトップに複数のNICがあります。 HTTPを使用して1台のサーバーと通信しています。私が応答を送って受け取るとき。特定のHTTP要求に対してどのNICが通信するために使用されているかを知りたい。HTTP応答が来るNICを特定します。

プライベートネットワークに複数のNICを接続し、コールバックURLをホストしたいHTTPサーバーに1つのNICしか接続していないので、これを知っておく必要があります。私はC#を使用しています。ネット4.0

助けていただければ幸いです。

+0

私にとっては、作成時に非常に脆いアプリケーションのように聞こえます。 –

+0

@Andrew私は、これをやりたがっている正当な理由があると思う。 –

答えて

3

あなたが気にする必要がないので、どのNICからの要求であるかを本当に尋ねることはできません。

var localAddress = Request.ServerVariables["LOCAL_ADDR"]; 

あなたはサーバー変数hereについての詳細を見つけることができます。しかし、あなたは、要求が入って来た上でIPを取得することができます。デイヴ・ヴァン・デンEyndeとして

1

氏は述べていますプラスこれは、マシン上のアダプタのIPアドレスを取得します -

foreach (NetworkInterface netInterface in NetworkInterface.GetAllNetworkInterfaces()) 
    { 
    Console.WriteLine("Name: " + netInterface.Name); 
    Console.WriteLine("Description: " + netInterface.Description); 
    Console.WriteLine("Addresses: "); 
    IPInterfaceProperties ipProps = netInterface.GetIPProperties(); 
    foreach (UnicastIPAddressInformation addr in ipProps.UnicastAddresses) 
    { 
     Console.WriteLine(" " + addr.Address.ToString()); 
    } 
    Console.WriteLine(""); 
    } 
+0

ありがとう...これは私のデスクトップ上のすべてのNICを一覧表示します。私は、HTTPサーバーと通信できるNICを使用したいと考えています。ときどきそれは無線LANアダプターになることができますか、ユーザーはVPNを使ってアクセスすることもできます。 – user888490

+1

Dave Van den Eyndeが着信IPアドレスを取得し、そのIPアドレスを探してリストを繰り返します。 –

1

.NETのHttpWebRequestのと関連オブジェクトがあなたのためにスタックをLocalEndpoint情報をplumbするしないでください。 FiddlerCoreのようなものを使用する場合は、各インタフェースでリクエストを試すか、進行中の接続にどのローカルアダプタが使用されたかを推測するためにhttp://blogs.msdn.com/b/fiddler/archive/2011/03/09/mapping-socket-or-port-to-owner-process-in-c-sharp-dotnet.aspxのようなテクニックを使用できます。

しかし、一般的に、このアプローチは脆弱になるため、この機能が本当に必要かどうかを慎重に検討する必要があります。

+0

ありがとう@EricLaw -MSFT私が述べたように – user888490

+0

ありがとう@EricLaw -MSFT応答でエラーを送信する特定のHTTPサーバーからイベントを受け取ることができるように、コールバックURLをホストするのに最も適しているアダプタを特定する他の方法はありますかrequsetに。私はGETBestInterface()を使用していますが、ユーザがVPNを使用してログインしているときに最良の一致を示していない場合、64xxxの範囲の番号が返されます – user888490

関連する問題