Как определить, является ли строка допустимым IPv4 или адресом IPv6 в C#?

Вы можете использовать приведенный ниже код в root htaccess.

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(^.*)\.xyz.com
RewriteRule (.*)  index.php?username=%1&$1  [L,QSA]

http://hello.xyz.com/abc/?var=12

Array
(
    [username] => abc
    [index_php] => 
    [abc/] => 
    [var] => 12
)

Поддомен подстановочного знака необходим для активации DNS. вы получите имя пользователя в строке запроса, которое вы можете использовать внутри своего кода.

67
задан Josh 28 April 2009 в 17:36
поделиться

2 ответа

You can use this to try and parse it:

 IPAddress.TryParse

Then check AddressFamily which

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

EDIT: 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;
        }
    }
138
ответ дан 24 November 2019 в 14:27
поделиться
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.InterNetworkV6 для IPv6.

14
ответ дан 24 November 2019 в 14:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: