【问题标题】:In C#, how do I resolve the IP address of a host?在 C# 中,如何解析主机的 IP 地址?
【发布时间】:2010-11-05 00:15:28
【问题描述】:

如何动态获取服务器(要连接的PC)的IP地址?

【问题讨论】:

  • 例如,Ping.Send 需要一个 IPAddress,因此对于“服务器处于活动状态”的验证代码需要翻译。

标签: c# ip-address resolve


【解决方案1】:

如果您使用以下方法,您将能够正确解决

 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;
        }

【讨论】:

    【解决方案2】:

    根据您对混乱答案的评论,您不需要服务器的 IP 地址,您需要客户端的 IP 地址。如果是这种情况,请解决您的问题……您的答案将是 HttpRequest.UserHostAddress。

    【讨论】:

      【解决方案3】:
      IPHostEntry Host = Dns.GetHostEntry(DNSNameString);
      DoSomethingWith(Host.AddressList);
      

      【讨论】:

      • 感谢大家的帮助,但我想获取访问者的 IP 地址,而不是我正在使用的电脑
      • 呃。我的示例与您使用的 PC 无关。 DNSNameString 是您要连接的服务器的名称——即回答原始问题。我不知道你所说的关于访问者 IP 地址的这些东西来自哪里,或者它与这个问题有什么关系。
      【解决方案4】:

      【讨论】:

        【解决方案5】:

        System.Dns.GetHostEntry 可用于将名称解析为 IP 地址。

        【讨论】:

          猜你喜欢
          • 2011-01-10
          • 1970-01-01
          • 2013-03-25
          • 2019-09-29
          • 2011-03-12
          • 2014-02-26
          • 2012-08-04
          • 1970-01-01
          • 2014-10-13
          相关资源
          最近更新 更多