[C#]判断是否是合法的IP4,IP6地址
判断一个字符串如果没有端口的话,利用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);
- }
测试结果:
希望有所帮助!
[C#]判断是否是合法的IP4,IP6地址的更多相关文章
- C#检查字符串是否是合法的HTTP URL地址的代码
在研发过程,把开发过程较好的一些内容片段记录起来,下面的内容是关于C#检查字符串是否是合法的HTTP URL地址的内容,应该是对各位有较大用处. protected string HTTPChecke ...
- python学习-判断是否是私网IP地址
判断是否是私网IP地址 私网IP地址范围如下: 192.168.0.0-192.168.255.255 172.16.0.0-172.31.255.255 10.0.0.0-10.255.255.25 ...
- c#判断是否为合法的email地址
题目要求: class Program { static void Main(string[] args) { Console.WriteLine("请输入正确的邮箱地址,以 @sina.c ...
- 判断是否是合法的IP地址
ipv4 import re #简单的匹配给定的字符串是否是ip地址,下面的例子它不是IPv4的地址,但是它满足正则表达式 if re.match(r"^(?:[0-9]{1,3}\.){3 ...
- Asp.net中的一个判断session是否合法的做法
1 if (Session["UserID"] == "" || Session["UserID"] == null) 2 { 3 ...
- 判断是否是有效的IPV4地址
参考链接: https://blogs.msdn.microsoft.com/oldnewthing/20060522-08/?p=31113 http://www.cnblogs.com/txw19 ...
- 解决ios开发中不合法的网络请求地址
NSString *const kWebsite = @"http://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct ...
- js判断非127开头的IP地址
js验证回送地址,IP地址不能以127开头 回送地址(127.x.x.x)是本机回送地址(Loopback Address) var ipNotStartWith127 = function(ip) ...
- Solidity的地址 数组如何判断是否包含一个给定的地址?
Q: given address[] wallets. What is the correct method to check that the list contains a given addre ...
随机推荐
- IOS开发之类和对象
IOS开发之类和对象 OC和Java一样都是一种面向对象的语言,从今天開始我和大家一起来系统学习这样的面向对象的语言oc,欢迎大家什么问题和我一起探讨和学习. OC定义类有两个步骤:1.接口部分(通俗 ...
- 计算机思维or人的思维
计算机领域就会有计算机领域的一些特性和一些思维方式,或者说有他自己的一些问题,须要用相应的思维方式来进行理解它,从而更好的驾驭他.有些时候遇到的一些问题,自己想却想不明确,也是由于我们没有把自己当做一 ...
- Android手机监控软件设计实现
一.需求分析: 随着IT信息技术的飞速发展,手机的普及,伴随着智能手机的出现及快速的更新换代,手机已不仅仅是一个通信工具,更是一个多功能的应用平台. 手机监控软件则是基于电脑监控软件的原理,植入手机平 ...
- 安卓模拟器Android SDK Manager 无法获取SDK列表的解决办法
1.打开运行Android SDK Manager ,Tool菜单,选择Options,打开设置菜单,勾选“Force https://...sources to be fetched using h ...
- careercup-中等难题 17.2
17.2 设计一个算法,判断玩家是否赢了井字游戏. 解法: 假设这个检查某人是否赢得了井字游戏的函数为HasWon,那么我们第一步要向面试官确认, 这个函数是只调用一次,还是要多次频繁调用.如果是多次 ...
- Android利用Looper在子线程中改变UI
MainActivity如下: package cn.testlooper; import android.app.Activity; import android.os.Bundle; import ...
- Understanding transient variables in Java and how they are practically used in HashMap---reference
What is the significance of the transient keyword in Java? If you know the answer, good! you are a p ...
- Session Store
Session Store Configuration Session Usage Flash Data Session Drivers Configuration Since HTTP driven ...
- Using zend-paginator in your Album Module
Using zend-paginator in your Album Module TODO Update to: follow the changes in the user-guide use S ...
- Porsche Piwis Tester II “No VCI has been detected”,how to do?
Hi,Joy, I am sorry that my Porsche Piwis Tester II from your shop said “No VCI has been detected” wh ...