1. C# / Говнокод #9584

    +109

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    public static bool IsLocalAddress(IPAddress address)
    {
       if (address.ToString() == IPAddress.Loopback.ToString())
       {
          return true;
       }
       foreach (IPAddress address2 in LocalAddresses)
       {
          if (address2.ToString() == address.ToString())
          {
             return true;
          }
       }
       return false;
    }

    Выдрано решарпером из одного коммерческой библиотеки.

    Запостил: absolut, 02 Марта 2012

    Комментарии (13) RSS

    • *из одной :)
      Ответить
    • После какого слова смеяться? Что не так?
      Ответить
      • Лупбэк адрес не ограничивается одним. И сравнение объектов через их строковое представление, это как сравнивать людей по одежде.
        Ответить
        • А теперь представьте, что так делает ведущий программист фирмы (я там, к счастью, давно не работаю)
          Ответить
        • а в LocalAddresses небось "127.0.0.0" и "::1"
          Ответить
          • Не совсем так...
            private static IPAddress[] _localAddresses;
            
                    public static IPAddress[] LocalAddresses
                    {
                        get
                        {
                            if (_localAddresses == null)
                            {
                                try
                                {
                                    _localAddresses = Dns.GetHostEntry(Dns.GetHostName()).AddressList;
                                }
                                catch (Exception exception)
                                {
                                    return new IPAddress[] { IPAddress.Loopback };
                                }
                            }
                            return _localAddresses;
                        }
                    }
            
                    public static bool IsLocalAddress(string address)
                    {
                        IPAddress address2;
                        return ((address == "localhost") || ((address == Dns.GetHostName()) || (IPAddress.TryParse(address, out address2) && IsLocalAddress(address2))));
                    }
            
                    private static string _localHostName;
            
                    public static string LocalHostName
                    {
                        get
                        {
                            if (_localHostName == null)
                            {
                                _localHostName = Dns.GetHostName();
                            }
                            return _localHostName;
                        }
                    }
            Ответить
            • а зачем там эта проверка вообще?

              говно как правило кроется в том зачем это народ делает.
              Ответить
              • На то, является ли адрес локальным? А чёрт его знает, я так глубоко не копал.
                Ответить
    • может рефлектором?
      Ответить
    • Как-то упустил я этот момент. Оно выдирается прямо с названиями переменных?
      Ответить
    • Нужно было equalsIgnoreCase.
      Ответить
    • показать все, что скрытоvanished
      Ответить

    Добавить комментарий