web-dev-qa-db-ja.com

クライアントマシンのIPアドレスを取得する

C#を使用してクライアントマシンのIPアドレスを取得しようとしています。私は以下のコードを使用してIPアドレスを取得しています:

string IPAddress = HttpContext.Current.Request.UserHostAddress;

しかし、それはエンコードされた形式、つまりfe80::ed13:dee2:127e:1264%13

実際のIPアドレスを取得するにはどうすればよいですか?この問題に直面した人は、何らかのアイデアを共有してください。

12
Sushri

C#

string IPAddress = GetIPAddress();

public string GetIPAddress()
{
    IPHostEntry Host = default(IPHostEntry);
    string Hostname = null;
    Hostname = System.Environment.MachineName;
    Host = Dns.GetHostEntry(Hostname);
    foreach (IPAddress IP in Host.AddressList) {
        if (IP.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) {
            IPAddress = Convert.ToString(IP);
        }
    }
    return IPAddress;
}

VB.net

Dim Host As IPHostEntry
Dim Hostname As String
Hostname = My.Computer.Name
Host = Dns.GetHostEntry(Hostname)
For Each IP As IPAddress In Host.AddressList
    If IP.AddressFamily = System.Net.Sockets.AddressFamily.InterNetwork Then
        IPAddress = Convert.ToString(IP)
    End If
    Next
Return IPAddress

お役に立てれば

private string GetUserIP()
 {
     return Request.ServerVariables["HTTP_X_FORWARDED_FOR"] ?? Request.ServerVariables["REMOTE_ADDR"];    
 }

あなたはいくつかのIPアドレスを取得するかもしれないので、それらを分割することができます-

private string GetUserIP()
    {
        string ipList = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

        if (!string.IsNullOrEmpty(ipList))
        {
            return ipList.Split(',')[0];
        }

        return Request.ServerVariables["REMOTE_ADDR"];
    }
6
Ramashankar

これを使ってみてください

string ip=System.Net.Dns.GetHostEntry
               (System.Net.Dns.GetHostName()).AddressList.GetValue(0).ToString();
5
The Dictator

私のプロジェクトでは、ローカルPC IPを取得する必要があります。だから私はそれを使用します以下のコードを試してください

string strHostName = System.Net.Dns.GetHostName();
IPHostEntry ipEntry = System.Net.Dns.GetHostEntry(strHostName);
IPAddress[] addr = ipEntry.AddressList;
string ip = addr[1].ToString();
4
Sapnandu