gpt4 book ai didi

c# - IPv4 和 IPv6 地址检查器

转载 作者:行者123 更新时间:2023-11-30 23:34:02 24 4
gpt4 key购买 nike

当我输入字符串“192”并解析该字符串时,即使它不是有效的 IPv4 地址,它也会继续返回 IPv4。我尝试添加一个 else if (someIP.GetAddressBytes().Length == 1) 但它仍然返回 IPv4。

IPAddress someIP = IPAddress.Parse("192");

if (someIP.GetAddressBytes().Length == 4)
{
Console.WriteLine("IPv4");
}
else if (someIP.GetAddressBytes().Length == 16)
{
Console.WriteLine("IPv6");
}
else
{
Console.WriteLine("Neither");
}

最佳答案

您可以使用以下代码来验证 IPv6IPv4 地址:

public static bool IsValidIP(string address)
{
IPAddress ip;
if (!IPAddress.TryParse(address, out ip)) return false;

switch (ip.AddressFamily)
{
case AddressFamily.InterNetwork:
if (address.Length > 6 && address.Contains("."))
{
string[] s = address.Split('.');
if (s.Length == 4 && s[0].Length > 0 && s[1].Length > 0 && s[2].Length > 0 && s[3].Length > 0)
return true;
}
break;
case AddressFamily.InterNetworkV6:
if (address.Contains(":") && address.Length > 15)
return true;
break;
}
return false;
}

根据 documentation , IPAddress.AddressFamily 将为 IPv4 返回 InterNetwork 或为 IPv6 返回 InterNetworkV6

关于c# - IPv4 和 IPv6 地址检查器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33642006/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com