English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

الحصول على IP وتحديد ما إذا كان IP في نطاق في C#

لا أتحدث كثيرًا، يرجى النظر في الكود:

/// <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);
    يعود 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;
  {}

این تمام محتوای این مقاله است، امیدوارم محتوای این مقاله به شما در یادگیری یا کار شما کمک کند، همچنین امیدوارم که از درس‌های نعره بیشتری حمایت کنید!

اظهار: محتوای این مقاله از اینترنت است، حق مالکیت آن به مالک آن تعلق دارد، محتوای توسط کاربران اینترنت به صورت خودجوش ارائه شده و به صورت خودکار بارگذاری شده است، این وب‌سایت مالکیت ندارد، و به عنوان محتوای دستکاری شده در نظر گرفته نمی‌شود، و هیچ مسئولیتی در این زمینه ندارد. اگر محتوای مربوط به حق انحصاری را پیدا کردید، خوشحال می‌شوم که ایمیل به آدرس notice#oldtoolbag.com (در هنگام ارسال ایمیل، لطفاً # را به @ تبدیل کنید) ارسال کنید تا گزارش داده شود و مدارک مربوطه را ارائه دهید، اگر واقعاً تایید شد، این وب‌سایت فوراً محتوای مربوط به حق انحصاری را حذف خواهد کرد.

التي قد تهمك