标签:c net ip-address ipv6 net-4-5
在我的电脑中,这段代码:
var someIps = new[]
{
"::1.2.3.4",
"::0000:1.2.3.4",
"0:0:0:0:0:0:0000:1.2.3.4",
"1::0000:1.2.3.4",
"0000:0000:0000:0000:0000:0000:0000:1.2.3.4",
"::abcd:1.2.3.4",
"0:0:0:0:0:0:abcd:1.2.3.4",
"1::abcd:1.2.3.4",
"0000:0000:0000:0000:0000:0000:abcd:1.2.3.4",
"::ffff:1.2.3.4",
"0:0:0:0:0:0:ffff:1.2.3.4",
"1::ffff:1.2.3.4",
"0001:0000:0000:0000:0000:0000:ffff:1.2.3.4",
};
foreach ( var ip in someIps )
{
if (IPAddress.TryParse( ip, out var parsed ))
Console.WriteLine( "{0} parses to {1}", ip, parsed );
else
Console.WriteLine( "{0} does not parse.", ip, parsed );
}
生成此输出:
::1.2.3.4 parses to ::1.2.3.4
::0000:1.2.3.4 parses to ::1.2.3.4
0:0:0:0:0:0:0000:1.2.3.4 does not parse.
1::0000:1.2.3.4 parses to 1::102:304
0000:0000:0000:0000:0000:0000:0000:1.2.3.4 does not parse.
::abcd:1.2.3.4 parses to ::abcd:102:304
0:0:0:0:0:0:abcd:1.2.3.4 does not parse.
1::abcd:1.2.3.4 parses to 1::abcd:102:304
0000:0000:0000:0000:0000:0000:abcd:1.2.3.4 does not parse.
::ffff:1.2.3.4 parses to ::ffff:1.2.3.4
0:0:0:0:0:0:ffff:1.2.3.4 does not parse.
1::ffff:1.2.3.4 parses to 1::ffff:102:304
0001:0000:0000:0000:0000:0000:ffff:1.2.3.4 does not parse.
为什么它解析:: ffff:1.2.3.4,但不能解析0:0:0:0:0:0:ffff:1.2.3.4?他们不应该是同一个地址吗?
我是否遗漏了IPv6表示中的某些内容,使这些字符串无效?或者我只是在[IPAddress.TryParse] [1]中找到了一个错误?
解决方法:
在完整的书面行中你有一个错误.它应该是8组十六进制数. 0:0:0:0:0:0:ffff然而只有7组 – 6个0组,1个f组
事实上,像这样的数字只有6组:
0001:0000:0000:0000:0000:ffff-1 01-组,4 0-组,1-f-组.
只是一个经典的错误,重复似乎导致你忽略了一些东西.
标签:c,net,ip-address,ipv6,net-4-5 来源: https://codeday.me/bug/20190527/1161491.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。