国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

[C#]判斷是否是合法的IP4,IP6地址

2019-11-14 16:31:49
字體:
來源:轉載
供稿:網友

判斷一個字符串如果沒有端口的話,利用ipAddress.TryParse很好判斷,那么有端口怎么判斷呢,正則表達式?還是其他方式?

關鍵代碼:

        /// <summary>        /// 判斷是否是合法的IP4,IP6地址        /// </summary>        /// <param name="ip">需要判斷的字符串</param>        /// <returns>合法則返回host部分,若不合法則返回空</returns>        public static string GetIPAddress(string ip)        {            string _ipAddress = string.Empty;            if (!string.IsNullOrEmpty(ip))            {                UriHostNameType _hostType = Uri.CheckHostName(ip);                if (_hostType == UriHostNameType.Unknown)//譬如 "192.168.1.1:8060"或者[2001:0DB8:02de::0e13]:9010                {                    Uri _url;                    if (Uri.TryCreate(string.Format("http://{0}", ip), UriKind.Absolute, out _url))                    {                        _ipAddress = IPAddressTryParse(_url.Host);                    }                }                else if (_hostType == UriHostNameType.IPv4 || _hostType == UriHostNameType.IPv6)                {                    _ipAddress = IPAddressTryParse(ip);                }            }            return _ipAddress;        }        PRivate static string IPAddressTryParse(string ip)        {            string _ipAddress = string.Empty;            IPAddress _ipAdr;            if (IPAddress.TryParse(ip, out _ipAdr))            {                _ipAddress = _ipAdr.ToString();            }            return _ipAddress;        }

單元測試:

        [TestMethod()]        public void GetIPAddressTest()        {            string _ip4Address1 = "192.168.1.1";            string _expected1 = "192.168.1.1";            string _actual1 = NetWorkToolV2.GetIPAddress(_ip4Address1);            Assert.AreEqual(_expected1, _actual1);            string _ip4Address2 = "192.168.1.1:8060";            string _expected2 = "192.168.1.1";            string _actual2 = NetWorkToolV2.GetIPAddress(_ip4Address2);            Assert.AreEqual(_expected2, _actual2);            string _ip6Address3 = "2001:0DB8:02de::0e13";            string _expected3 = "2001:DB8:2de::e13";            string _actual3 = NetWorkToolV2.GetIPAddress(_ip6Address3);            Assert.AreEqual(_expected3, _actual3,true);            string _ip6Address4 = "[2001:0DB8:2de::e13]:9010";            string _expected4 = "2001:DB8:2de::e13";            string _actual4 = NetWorkToolV2.GetIPAddress(_ip6Address4);            Assert.AreEqual(_expected4, _actual4, true);            string _ipAddress5 = "erroriptest";            string _expected5 = string.Empty;            string _actual5 = NetWorkToolV2.GetIPAddress(_ipAddress5);            Assert.AreEqual(_expected5, _actual5);        }

測試結果:

image

希望有所幫助!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 蒲江县| 怀集县| 托克托县| 修文县| 绥滨县| 尚义县| 夏津县| 澄江县| 馆陶县| 龙井市| 舞钢市| 莱州市| 华容县| 革吉县| 揭东县| 巢湖市| 卢龙县| 南澳县| 桃园县| 分宜县| 融水| 金溪县| 禄劝| 汽车| 濉溪县| 织金县| 淄博市| 苍溪县| 淳化县| 宁远县| 吐鲁番市| 芮城县| 津南区| 乌鲁木齐县| 林甸县| 岳普湖县| 南岸区| 农安县| 九寨沟县| 逊克县| 资溪县|