Пример #1
0
        public IPv4(string IPAddress, IPv4Type ipType = IPv4Type.IPAddress)
        {
            switch (ipType)
            {
            default:
            case IPv4Type.IPAddress:
                this.IPAddress = IPAddress;
                eIPAddress     = IP2sIP(IPAddress, IPv4Type.eIPAddress);
                kIPAddress     = IP2sIP(IPAddress, IPv4Type.kIPAddress);
                break;

            case IPv4Type.eIPAddress:
                eIPAddress = IPAddress;
                IPAddress  = sIP2IP(eIPAddress, ipType);
                kIPAddress = IP2sIP(IPAddress, IPv4Type.kIPAddress);
                break;

            case IPv4Type.kIPAddress:
                kIPAddress = IPAddress;
                IPAddress  = sIP2IP(kIPAddress, IPv4Type.kIPAddress);
                eIPAddress = IP2sIP(IPAddress, IPv4Type.eIPAddress);
                break;
            }
            NumAddress = IP2Num(IPAddress);
        }
        public object Read(IPv4Type pv4Type)
        {
            var ipv4bytes = reader.ReadBytes(4);

            Array.Reverse(ipv4bytes);
            return(new IPAddress(ipv4bytes));
        }
Пример #3
0
        public void Write(IPv4Type pv4Type, object value)
        {
            var address4 = ExtractIPAddress(value);

            if (address4.AddressFamily != System.Net.Sockets.AddressFamily.InterNetwork)
            {
                throw new ArgumentException($"Expected IPv4, got {address4.AddressFamily}");
            }

            var ipv4bytes = address4.GetAddressBytes();

            Array.Reverse(ipv4bytes);
            writer.Write(ipv4bytes, 0, ipv4bytes.Length);
        }
Пример #4
0
        private static string GetBaseN(IPv4Type type)
        {
            string baseN;

            switch (type)
            {
            default:
            case IPv4Type.eIPAddress:
                baseN = BaseN_e;
                break;

            case IPv4Type.kIPAddress:
                baseN = BaseN_k;
                break;
            }
            return(baseN);
        }
Пример #5
0
        public static string sIP2IP(string sIP, IPv4Type sIPType)
        {
            uint numAddress = (uint)BMath.BaseNToBase10(sIP, GetBaseN(sIPType));

            return(Num2IP(numAddress));
        }
Пример #6
0
 public static string IP2sIP(string IP, IPv4Type sIPType)
 {
     return(BMath.Base10ToBaseN(IP2Num(IP), GetBaseN(sIPType)));
 }