请教.NET(1.0)框架兼容IPV6吗?

曾默 2010-06-13 11:29:23
首先,将本机hosts文件做个域名解析:
XXX.XXX.XXX.XXX(任意IPV4地址) www.baidu.com


之后,在运行如下.NET代码:

String ss = "sp.hn.vnet.cn";
System.Net.IPHostEntry hostInfo = Dns.GetHostByName(ss);
IPAddress ip = hostInfo.AddressList[0];
Response.Write(ip.ToString());


将打印出hosts文件解析的IP地址XXX.XXX.XXX.XXX。

但是,如果hosts文件里写的是IPV6的地址,运行上面的代码打印出的是真正的www.baidu.com的IP地址。


所以,我怀疑是不是.NET1.0宽带不兼容IPV6环境,但没地方考证,请高手指点!
...全文
127 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzsh0622 2010-06-13
  • 打赏
  • 举报
回复
Dns.GetHostByName(ss); 在2.0中提示过时了,可以改用Dns.GetHostEntry()

IPHostEntry IpEntry = Dns.GetHostEntry(Dns.GetHostName());
string myip = IpEntry.AddressList[0].ToString();

这样,如果没有安装IPV6协议,可以取得IP地址. 但是如果安装了IPV6,就取得的是IPV6的IP地址.
string myip = IpEntry.AddressList[1].ToString();

这样就在IPV6的情况下取得IPV4的IP地址.
把IP地址变成String类型,然后通过长度判断,IPv4的长度最多只有15位,IPv6有39位。

参考:c#获取客户端的IP和服务器的IP
曾默 2010-06-13
  • 打赏
  • 举报
回复
谢谢,你的回复给我了很大启发,不过我用2.0框架同样的代码也不能获取到IPV6的IP,知道什么原因吗?
lzsh0622 2010-06-13
  • 打赏
  • 举报
回复
.NET Framework 1.1 版开始支持 IPv6; 1.0 不兼容IPV6环境 ,MSDN 1.1新特性中有相关描述.
段传涛 2010-06-13
  • 打赏
  • 举报
回复
呵呵 看来 只能这样,再费时间找 不知道值不值
曾默 2010-06-13
  • 打赏
  • 举报
回复
服务器上去装sp1、sp2就麻烦 也许只能这样才能解决问题了
曾默 2010-06-13
  • 打赏
  • 举报
回复
1.1中没Dns.GetHostEntry()这个方法,其他也没找到相同功能的方法,纠结
lzsh0622 2010-06-13
  • 打赏
  • 举报
回复
.net sp1 sp2 + 安装IPV6
曾默 2010-06-13
  • 打赏
  • 举报
回复
奇怪了,.NET1.1支持IPV6的话为啥获取不到地址
段传涛 2010-06-13
  • 打赏
  • 举报
回复
好像没有什么好方法,说实话 我是没有找到。
来学习的 顶你
lzsh0622 2010-06-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zshengli 的回复:]
2.0确实可以获取IPV6地址,不过1.1好像不行...
[/Quote]

一本经典书《C#高级编程(第3版)》中介绍:

......

  并发执行
  并发执行side-by-side execution是指在同一个服务器上运行应用程序的多个版本,其中不同的应用程序版本使用不同的运行库版本。Microsoft一直都向开发人员承诺提供这个功能,但该功能总是很难可视化,因为只能使用Framework的一个版本。在发布了Framework的第2版.NET Framework 1.1后,就可以看到Microsoft提供的这个功能了。现在,可以创建.NET应用程序面向.NET Framework 1.1的新版本,同时还可以让面向.NET Framework 1.0的旧应用程序像以前那样继续运行。
   支持Internet Protocol 6(IPv6)
   最近,许多Internet使用IP 4运行,IP4也称为IPv4。它提供了IP地址,例如255.255.255. 255。.NET Framework 1.1现在支持IPv6,IPv6是在1995年创建的,解决了IPv4所面临的许多问题。如果人们一直采用IPv4,将很快用尽可用的IP地址。
   .NET Framework 1.1通过System.Net命名空间支持IPv6,ASP.NET和XML Web服务也支持IPv6。
   Visual Studio .NET 2003的改进
曾默 2010-06-13
  • 打赏
  • 举报
回复
2.0确实可以获取IPV6地址,不过1.1好像不行,感谢上楼大哥帮忙

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧