1

独自の正規表現を記述したくないので、System.Net.IPAddress.TryParseを使用してIPv6アドレスを検証したいと思います:-)

ただし、これにより、「(validIPv6)](anythingatallhere)」などの文字列が許可されるようです。たとえば、「1234 :: 5678:abcd]whargarbl」などです。

これらが有効である理由はありますか、それともこれは誤りですか?

これは、実際には「[(validIPv6)] :( portnumber)」の形式の文字列のみが必要であるため、自分で少し検証する必要があるため、さらに複雑になります。

4

1 に答える 1

0

私はリフレクターを調べていましたが、現在のOSがIPV6をサポートしていない場合、最後の']'文字以降のすべてを無視する解析ルーチンが呼び出されるようです。

これは問題のあるコードのようです。前のコードに関連しているため、2番目または条件に注意してください。

int length = ipString.Length;
fixed (char* str2 = ((char*) ipString))
{
    char* name = str2;
    if (IPv6AddressHelper.IsValid(name, start, ref length) || (length != ipString.Length))
于 2010-05-14T16:36:58.827 に答える