获取系统IP代码无法在服务器中运行

时间:2012-04-03 12:42:00

标签: c# asp.net

此代码适用于我的系统而非服务器请帮我修复此错误。我不确定是什么错误..

这是我的部分代码......

private IPAddress getMyCurrentIP()
{
     IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());

     if (host.AddressList.Length == 1)
     myCurrentIP = host.AddressList[0].ToString();
     else
     {
        foreach (IPAddress address in host.AddressList)
        {
          if (address.AddressFamily == AddressFamily.InterNetwork)
          {
            if (IsLocal(address))
            return address;
         }
      }
  }


  return null;
}

  public bool IsLocal(IPAddress address)
  {
  if (address == null)
  throw new ArgumentNullException("address");

  byte[] addr = address.GetAddressBytes();

  return addr[0] == 10
  || (addr[0] == 192 && addr[1] == 168)
  || (addr[0] == 172 && addr[1] >= 16 && addr[1] <= 31);
  } 

请帮我解决此错误...

1 个答案:

答案 0 :(得分:0)

我不会编译给定的代码,因为你从未声明myCurrentIP。此外,如果host.AddressList中只有一个项目,则您的函数仍将返回null。 重写第一个条件:

if (host.AddressList.Length == 1)
{
    return host.AddressList[0];
}
else
{
    ...

如果满足该条件,那将返回系统的第一个也是唯一的IPAddress。