Beispiel #1
0
        public bool Equals(IPSeg ipSeg)
        {
            if (null == ipSeg)
            {
                return(false);
            }

            return(this.From.Equals(ipSeg.From) &&
                   this.To.Equals(ipSeg.To));
        }
Beispiel #2
0
        static public int CompareFor(System.Net.IPAddress x, System.Net.IPAddress y)
        {
            if ((x.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork &&
                 y.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) ||
                (x.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6 &&
                 y.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6))
            {
                return(IPSeg.CompareFor(x.GetAddressBytes(), y.GetAddressBytes()));
            }

            throw new Exception("IP地址类型必须是IPv4或者IPv6才能进行比较");
        }
Beispiel #3
0
        public bool In(System.Net.IPAddress addr)
        {
            if (IsNull(from_))
            {
                return(false);
            }
            if (IsNull(to_))
            {
                return(0 == IPSeg.CompareFor(From, addr));
            }

            if (IPSeg.CompareFor(From, addr) > 0)
            {
                return(false);
            }
            return(IPSeg.CompareFor(To, addr) >= 0);
        }
Beispiel #4
0
        public IEnumerator <System.Net.IPAddress> internalGetEnumerator()
        {
            if (!IsNull(from_))
            {
                if (IsNull(to_))
                {
                    yield return(From);
                }
                else
                {
                    System.Net.IPAddress from = From;
                    while (true)
                    {
                        yield return(from);

                        if (IPSeg.CompareFor(from, To) >= 0)
                        {
                            break;
                        }
                        from = IPSeg.Next(from);
                    }
                }
            }
        }
Beispiel #5
0
 static public int Distance(System.Net.IPAddress x, System.Net.IPAddress y)
 {
     return(IPSeg.Distance(x.GetAddressBytes(), y.GetAddressBytes()));
 }
Beispiel #6
0
        public static bool In(System.Net.IPAddress address, IPSeg[] segments)
        {
            foreach (IPSeg seg in segments)
            {
                if (seg.In(address))
                    return true;
            }

            return false;
        }
Beispiel #7
0
        public bool Equals(IPSeg ipSeg)
        {
            if (null == ipSeg)
                return false;

            return this.From.Equals(ipSeg.From)
            && this.To.Equals(ipSeg.To);
        }