当前位置:  开发笔记 > 编程语言 > 正文

如何确定字符串是否是C#中的有效IPv4或IPv6地址?

如何解决《如何确定字符串是否是C#中的有效IPv4或IPv6地址?》经验,为你挑选了4个好方法。

我知道正则表达式对于验证IP地址是危险的,因为IP地址可以采用不同的形式.

我见过类似的C和C++问题,这些问题是用C#inet_ntop()中不存在的函数解决的.

我发现的.NET解决方案只处理标准的"ddd.ddd.ddd.ddd"表单.有什么建议?



1> Erich Miraba..:

您可以使用它来尝试解析它:

 IPAddress.TryParse

然后检查AddressFamily

返回IPv4的System.Net.Sockets.AddressFamily.InterNetwork或IPv6的System.Net.Sockets.AddressFamily.InterNetworkV6.

编辑:一些示例代码.根据需要改变:

    string input = "your IP address goes here";

    IPAddress address;
    if (IPAddress.TryParse(input, out address))
    {
        switch (address.AddressFamily)
        {
            case System.Net.Sockets.AddressFamily.InterNetwork:
                // we have IPv4
                break;
            case System.Net.Sockets.AddressFamily.InterNetworkV6:
                // we have IPv6
                break;
            default:
                // umm... yeah... I'm going to need to take your red packet and...
                break;
        }
    }


没问题.如你所知,BCL是庞大的.我试着每隔一段时间仔细阅读一下,看看那里有什么.
即使用户输入为"192.169.1",此方法也会返回有效的IP4地址.
是的,因为这是一个有效的IP地址,正是原始提问者通过正则表达式匹配的意思是危险的...请参阅此帖子http://stackoverflow.com/questions/12566664/ipaddress-tryparse-parses-192-168- to-192-0-0-168关于tryparse如何工作

2> 小智..:

只是警告使用System.Net.IpAddress.TryParse():

如果传递一个包含整数(例如"3")的字符串,TryParse函数会将其转换为"0.0.0.3",因此将其转换为有效的InterNetworkV4地址.因此,至少应该将重新格式化的"0.0.0.3"返回给用户应用程序,以便用户知道他们的输入是如何被解释的.



3> Tamas Czineg..:
string myIpString = "192.168.2.1";
System.Net.IPAddress ipAddress = null;

bool isValidIp = System.Net.IPAddress.TryParse(myIpString, out ipAddress);

如果isValidIp为true,您可以检查ipAddress.AddressFamily以确定它是IPv4还是IPv6.它AddressFamily.InterNetwork适用于IPv4和AddressFamily.InterNetworkV6IPv6.



4> Daniel..:

你可以检查出System.Uri.CheckHostName(值)返回Unknown,Dns,IPv4,IPv6.

if( Uri.CheckHostName( value ) != UriHostNameType.Unknown)
    //then 'value' is a valid IP address or hostname


即使用户输入为"192.169.1",此方法也会返回有效的IP4地址.没有最后一组网址.
很好,因为那是一个有效的IP地址.
推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有