在C#中,如何解析主机的IP地址?

15

如何动态地获取服务器的IP地址(即你要连接到的电脑)?


例如,Ping.Send需要一个IPAddress,因此对于“服务器是否在线”的验证代码,它需要翻译。 - Dirk Bester
5个回答

17

10
IPHostEntry Host = Dns.GetHostEntry(DNSNameString);
DoSomethingWith(Host.AddressList);

谢谢大家的帮助,但我想要获取访问者的 IP 地址,而不是我正在使用的电脑的 IP 地址。 - Dee
3
我的例子与你所使用的电脑无关。DNSNameString 应该是你要连接的服务器的名称——也就是回答原始问题的内容。我不知道你所说的有关访问者 IP 地址的内容从哪里来,以及它与这个问题有什么关系。 - chaos

2
如果您使用以下方法,您将能够正确地解决问题。
 public static bool GetResolvedConnecionIPAddress(string serverNameOrURL, out IPAddress resolvedIPAddress)
        {
            bool isResolved = false;
            IPHostEntry hostEntry = null;
            IPAddress resolvIP = null;
            try
            {
                if (!IPAddress.TryParse(serverNameOrURL, out resolvIP))
                {
                    hostEntry = Dns.GetHostEntry(serverNameOrURL);

                    if (hostEntry != null && hostEntry.AddressList != null && hostEntry.AddressList.Length > 0)
                    {
                        if (hostEntry.AddressList.Length == 1)
                        {
                            resolvIP = hostEntry.AddressList[0];
                            isResolved = true;
                        }
                        else
                        {
                            foreach (IPAddress var in hostEntry.AddressList)
                            {
                                if (var.AddressFamily == AddressFamily.InterNetwork)
                                {
                                    resolvIP = var;
                                    isResolved = true;
                                    break;
                                }
                            }
                        }
                    }
                }
                else
                {
                    isResolved = true;
                }
            }
            catch (Exception ex)
            {

            }
            finally
            {
                resolvedIPAddress = resolvIP;
            }

            return isResolved;
        }


0
根据您对chaos答案的评论,您不想要服务器的IP地址,而是想要客户端的IP地址。如果是这样,请修改您的问题...您的答案将是HttpRequest.UserHostAddress。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接