当前位置: 首页 > 编程笔记 >

C# 获取IP及判断IP是否在区间

贺彬
2023-03-14
本文向大家介绍C# 获取IP及判断IP是否在区间,包括了C# 获取IP及判断IP是否在区间的使用技巧和注意事项,需要的朋友参考一下

话不多说,请看代码

/// <summary>
  /// 获取客户端IP
  /// </summary>
  /// <returns></returns>
  public static string GetClientIpAddress()
    {
      var httpContext = HttpContext.Current;
      if (httpContext.Request.ServerVariables == null)
      {
        return null;
      }
      var clientIp = httpContext.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] ??              httpContext.Request.ServerVariables["REMOTE_ADDR"];
      try
      {
        foreach (var hostAddress in Dns.GetHostAddresses(clientIp))
        {
          if (hostAddress.AddressFamily == AddressFamily.InterNetwork)
          {
            return hostAddress.ToString();
          }
        }
        foreach (var hostAddress in Dns.GetHostAddresses(Dns.GetHostName()))
        {
          if (hostAddress.AddressFamily == AddressFamily.InterNetwork)
          {
            return hostAddress.ToString();
          }
        }
      }
      catch (Exception ex)
      {

      }
      return clientIp;
    }
  /// <summary>
  /// ip是否在ip空间内
  /// </summary>
  /// <param name="ip"></param>
  /// <param name="ipSection"></param>
  /// <returns></returns>
  public static Boolean ipExistsInRange(String ip, String ipSection)
  {
    ipSection = ipSection.Trim();
    ip = ip.Trim();
    int idx = ipSection.IndexOf('-');
    String beginIP = ipSection.Substring(0, idx);
    String endIP = ipSection.Substring(idx + 1);
    return getIp2long(beginIP) <= getIp2long(ip) && getIp2long(ip) <= getIp2long(endIP);

  }
  public static long getIp2long(String ip)
  {
    ip = ip.Trim();
    String[] ips = ip.Split('.');
    long ip2long = 0L;
    for (int i = 0; i < 4; ++i)
    {
      ip2long = ip2long << 8 | Int64.Parse(ips[i]);
    }
    return ip2long;
  }
  public static long getIp2long2(String ip)
  {
    ip = ip.Trim();
    String[] ips = ip.Split('.');
    long ip1 = Int64.Parse(ips[0]);
    long ip2 = Int64.Parse(ips[1]);
    long ip3 = Int64.Parse(ips[2]);
    long ip4 = Int64.Parse(ips[3]);
    long ip2long = 1L * ip1 * 256 * 256 * 256 + ip2 * 256 * 256 + ip3 * 256 + ip4;
    return ip2long;
  }

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持小牛知识库!

 类似资料:
  • 本文向大家介绍C#获取真实IP地址(IP转为长整形、判断是否内网IP的方法),包括了C#获取真实IP地址(IP转为长整形、判断是否内网IP的方法)的使用技巧和注意事项,需要的朋友参考一下 今天查看登录日志,发现http_x_forwarded_for获取到的ip地址有些是内网ip地址,有些则是公网和内网ip地址一起获取到,用逗号分隔开,日志截图如下: 之前获取ip地址的C#代码如下: 看来http

  • 本文向大家介绍C#判断ip地址是否可以ping的通,包括了C#判断ip地址是否可以ping的通的使用技巧和注意事项,需要的朋友参考一下

  • 本文向大家介绍Java判断IP地址为内网IP还是公网IP的方法,包括了Java判断IP地址为内网IP还是公网IP的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java判断IP地址为内网IP还是公网IP的方法。分享给大家供大家参考。具体分析如下: tcp/ip协议中,专门保留了三个IP地址区域作为私有地址,其地址范围如下: 10.0.0.0/8:10.0.0.0~10.255.255

  • 本文向大家介绍对python判断ip是否可达的实例详解,包括了对python判断ip是否可达的实例详解的使用技巧和注意事项,需要的朋友参考一下 python中使用subprocess来使用shell 关于threading的用法 改良 :使用Queue来优化(FIFO) 以上这篇对python判断ip是否可达的实例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程

  • 问题内容: 用Java获取IP地址的最佳方法是什么?我正在尝试,但是它返回了我的计算机IP地址。我想是这样。我也试图从类似的服务中通过HTML获取IP,但是我认为这不是一个好主意。 问题答案: 以下内容使用Amazon Web服务并为我工作。

  • 本文向大家介绍Android 判断ip地址合法实现代码,包括了Android 判断ip地址合法实现代码的使用技巧和注意事项,需要的朋友参考一下 Android 判断ip地址合法实现代码 昨天,我在网上找了一下判断文本框内的字符串是否是合法的ip地址,自己想到了正则表达式,可是自己对这个却不熟,所以在网上查找了一些资料,最后终于是做出来了。 具体的代码很简单, 这个代码先用正则表达式判断是否合法,其