2012-03-21 5 views
5

私は、ユーザーを最も近いサーバーに自動的にリダイレクトするアプリケーションを作成中です(複数のサーバーがあります)。そのためには、クライアントが訪問しているクライアントのIPアドレスとサーバーのIPアドレスを検出する必要があります。私は、私が使用することができ、クライアントのIPアドレスを取得すると思う:クライアントとサーバーのIPアドレスを検出する

HttpContext.Current.Request.UserHostAddress 

は、どのように私は、クライアントが訪問しているサーバーのIPアドレスを取得できますか?それはDNSクエリを使用せずにそれを検出することは可能ですか?それがここにあるよう

+0

をクライアントがリダイレクトされるように接続したら、あなたにも、とにかくページに役立つ可能性があるとして、ルータレベルで行われているのより良いです。 – Lloyd

答えて

1

はルックス:TStamperへ

Getting the IP address of server in ASP.NET?

//this gets the ip address of the server pc 

public string GetIPAddress() 
{ 
string strHostName = System.Net.Dns.GetHostName(); 
IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName()); 
IPAddress ipAddress = ipHostInfo.AddressList[0]; 

return ipAddress.ToString(); 
} 

賞賛を!

+1

その答えはちょうど重複としてのコメントでなければなりません。 – Silvermind

+0

これは私にこのエラー '型または名前空間の名前 'IPHostEntry'が見つかりませんでした(あなたはusingディレクティブまたはアセンブリ参照がありませんか?)。私は何かを逃していますか? – skos

+0

リンクされた記事、[DNSクエリなし](http://stackoverflow.com/a/2239564/107625)でもう一方の答えを使用してください。 –

0

、より良いクリーナーと短い方法:

using System.Net; 

public IPAddress[] GetIPAddress() 
{ 
    return Dns.GetHostAddresses(Dns.GetHostName()); 
} 

TIP:このメソッドは、アドレスの配列を返し、そのうちのいくつかは、プライベートNICであり、少なくとも一つは、(インターネット側)publicです。これは、特定のIPアドレスがプライベートであるかどうかを示す有用な方法です。この方法に対するあなたのIPAddress[]アレイと、クエリ反復処理:リダイレクトのこの種の

public bool IsPrivateNetworkIPAddress(string ip) 
{ 
    Regex rx = new Regex(@"(^127\.0\.0\.1)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^192\.168\.)"); // see http://stackoverflow.com/a/2814102/290343 
    return rx.IsMatch(ip); 
} 
関連する問題