2

私がサーバーにバインドされたIPアドレスのリストを取得するために、Windows 2003の下にうまく働いたいくつかの既存のコードを持っている:"skipassource"アドレスを含むWindows 2008および.NETのシステムIPアドレスのリストを取得するには?

foreach (IPAddress addr in (Dns.GetHostEntry(Dns.GetHostName())).AddressList) 
{ 
    // Code here to act on each address 
} 

私たちのWindows 2008サーバー上でこのコードを実行すると、それは1つのIPアドレスのみを返します。 。さらに調査すると、マシンがリッスンしている残りのIPアドレスのすべてが、netsh int ipv4 add addressコマンドを使用して追加され、skipassource=trueフラグを指定して追加されたようです。

クエリにこれらのアドレスを含める、つまりサーバー上のすべてのアドレスを返す方法はありますか?

(あなたは好奇心旺盛であればWindows 2008のは、「プライマリ」、それはそれは考えてあなたのIPアドレスのどちらかを決定することを可能にするネットワークで新しい動作を導入し、当社のアプリケーションの残りのため、skipassource=trueフラグが設定されている私たちに依存しています主を選択することが可能。Windowsの2008年にそれを行うための唯一の方法は、skipassource=trueとして他のすべてのアドレスをマークすることです。)

編集この質問は、私は問題の周りに働いてきたように、今ちょうど、私の好奇心を満足させることです。上の私の元のコードは、サーバー上のすべてのIPを実行し、私が探していた特定のIPに一致するものが見つかったかどうかを調べるために使用されました。私は今、私が使用しているサーバがその特定のIPアドレス/ポートをリッスンするサービスをすでに実行しているかどうかを確認するので、IPのすべてをループする必要はありません。それでも、元の質問に答えがあるかどうか聞いてみたいと思います。

この問題を解決するために@aKzenTに感謝します。 Dns.GetHostEntry()ではなく、すべてのIPにアクセスするためにNetworkInteface.GetAllNetworkInterfaces()を使用します。

foreach (NetworkInterface netface in NetworkInterface.GetAllNetworkInterfaces()) 
{ 
    foreach (UnicastIPAddressInformation uni in netface.GetIPProperties().UnicastAddresses) 
    { 
     IPAddress addr = uni.Address; 
     // Code here to act on each address 
    } 
} 
+0

あなたは.NETを使用してアドレスを追加するとき、真skipassource =を追加する方法を知っているだろうか?現在ManagementObjectを使用して新しいアドレスを追加しています – user815809

+0

申し訳ありませんが、私はそれを行う方法に慣れていません。しかし、おそらくそれについての良い質問になります。 –

+1

ここにお願いしますhttp://stackoverflow.com/questions/12973074/how-to-programmatically-set-skipassource-true-using-c-net – user815809

答えて

2

skipassourceは、DNSネームシステムのIPアドレスが含まれていないことを意図しているので、私はあなたがしようと見ていましたあなたはDns.GetHostEntry

よりも別の方法を見つける必要があると思う:私の最終的なコードは次のようになりますSystem.Net.NetworkInformation名前空間?

GetAllNetworkInterfaces経由でアダプタをループすると、GetIPPropertiesを呼び出してアダプタのIPプロパティを取得し、次にUnicastAddressesをチェックすると、IPアドレスのリストを作成できます。しかし、テストされていません。

参照: http://msdn.microsoft.com/de-de/library/system.net.networkinformation.networkinterface.getallnetworkinterfaces.aspx

+0

ありがとう、これは動作します!私は最終的なコードで私の質問を更新しています。 –

+0

@aKzenT、.NETを使用してアドレスを追加するときにskipassource = trueを追加する方法を知っていますか?現在ManagementObjectを使用して新しいアドレスを追加しています。 – user815809

+0

@ user815809申し訳ありませんが、どうすればいいのかわかりません。私はGoogleがあなたに何か結果を与えていない場合、これについて別の質問を開くことをお勧めします... – aKzenT

関連する問題