如何确定一个字符串是在C#中有效的IPv4或IPv6地址? [英] How to determine if a string is a valid IPv4 or IPv6 address in C#?

查看:2091
本文介绍了如何确定一个字符串是在C#中有效的IPv4或IPv6地址?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I know regex is dangerous for validating IP addresses because of the different forms an IP address can take.

我已经看到了类似的问题的C和C ++,和那些已经解决与不使用C#的 inet_ntop()

I've seen similar questions for C and C++, and those were resolved with a function that doesn't exist in C# inet_ntop()

在.NET解决方案,我发现只能处理标准的ddd.ddd.ddd.ddd的形式。有什么建议?

The .NET solutions I've found only handle the standard "ddd.ddd.ddd.ddd" form. Any suggestions?

推荐答案

您可以用它来尝试分析它:

You can use this to try and parse it:

 IPAddress.TryParse

然后检查 AddressFamily

返回System.Net.Sockets.AddressFamily.InterNetwork为IPv4或System.Net.Sockets.AddressFamily.InterNetworkV6对于IPv6。

Returns System.Net.Sockets.AddressFamily.InterNetwork for IPv4 or System.Net.Sockets.AddressFamily.InterNetworkV6 for IPv6.

编辑:一些样本code。变化之处:

some sample code. change as desired:

    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;
        }
    }

这篇关于如何确定一个字符串是在C#中有效的IPv4或IPv6地址?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆