【问题标题】:Any Other way to get local IP address [duplicate]获取本地IP地址的任何其他方式[重复]
【发布时间】:2020-02-04 13:11:35
【问题描述】:

我只想获取本地IP地址而不使用dns.getHostName方法

private string GetIpAddress(){
  if(Regex.IsMatch(Dns.GetHostName(), @"^\d")){
    throw new Exception("Begin with Alphabet in HostName")
  }

  IPHostEntry ipEntry = Dns.GetHostEntry(Dns.GetHostName());

  foreach(IPAddress address in ipEntry.AddressList){
    if(address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork){
          return address.Tostring();
        }
  }

}

在某些用户系统中,主机名(计算机名称)必须由数字和字母组成。但是现在一些用户系统允许主机名只能有数字。

我的客户端程序使用 getHostName() 方法获取本地 ip。 但是当主机名只有数字时,getHostName() 无法获取主机名。

所以我只是想另一种方法来获取本地 IP 地址。

请帮帮我。

【问题讨论】:

  • 如果以数字开头会出现什么错误?

标签: c# numbers localhost ip hostname


【解决方案1】:

尝试了您的代码,几乎没有修改,效果很好:

    private string GetIpAddress()
            {
                System.Net.IPHostEntry ipEntry = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName());

                foreach (System.Net.IPAddress address in ipEntry.AddressList)
                {
                    if (address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                    {
                        return address.ToString();
                    }
                }

                return "";
            }

【讨论】:

    猜你喜欢
    • 2014-06-01
    • 2013-08-19
    • 1970-01-01
    • 2011-10-09
    • 2020-12-19
    • 2011-05-07
    • 1970-01-01
    • 2011-10-11
    • 1970-01-01
    相关资源
    最近更新 更多