为什么IPAddress.TryParse在']'之后允许任何内容

时间:2010-05-14 16:11:06

标签: visual-studio-2005 c#-2.0 tryparse

我想使用System.Net.IPAddress.TryParse来验证IPv6地址,因为我不想编写自己的reg exp: - )

然而,这似乎允许诸如“(validIPv6)](anyatallhere)之类的字符串” - 例如,“1234 :: 5678:abcd] whargarbl”。

这些是否有效,或者这是一个错误?

由于我实际上只想要“[(validIPv6)] :( portnumber)”形式的字符串这一事实使我更加复杂,所以我将不得不自己进行一些验证。

1 个答案:

答案 0 :(得分:0)

我正在查看反射器,似乎如果您当前的操作系统不支持IPV6,则会调用一个解析例程,该例程将忽略最后']'个字符后的所有内容。

这里似乎是违规代码,注意到与前一位代码相关的第二个或条件。

int length = ipString.Length;
fixed (char* str2 = ((char*) ipString))
{
    char* name = str2;
    if (IPv6AddressHelper.IsValid(name, start, ref length) || (length != ipString.Length))