`
wodamazi
  • 浏览: 1417663 次
文章分类
社区版块
存档分类
最新评论

“.NET 4.0 网络开发入门之旅系列文章”—— IP 知多少?(中)

 
阅读更多

“.NET 4.0 网络开发入门之旅系列文章”

IP 知多少?(中)

“.NET 4.0 网络开发入门之旅系列文章”—— IP 知多少?(上)

3. 怎样知道特定计算机的IP 地址?

.NET 基类库中有一个Dns 静态类,可以完成这个工作(图2 ):

2

Dns 提供了一堆的静态方法完成各种常用的IP 地址查询功能。

比如,以下代码获取本地主机名称:



String LocalhostName = Dns.GetHostName();



以下代码获取微软公司主机的IP 地址:



IPAddress[] ips = Dns.GetHostAddresses("www.microsoft.com") ;



将上述两句“组合起来”,我们就可以获取本地主机的所有IP 地址:



IPAddress[] ips = Dns.GetHostAddresses(Dns.GetHostName());



如果希望获取更详细的信息,可以使用Dns 的以下方法:



public static IPHostEntry GetHostEntry( string hostNameOrAddress )



上述代码中的IPHostEntry.NET 基类库中的另一个类(图3 ),可以看到通过它不仅可以获取指定主机的所有IPv4IPv6 地址,还可以知道它的主机名(HostName )和别名(Aliases )。

3

以下是使用GetHostEntry 直接访问微软网站得到的主机信息:

主机名称:lb2.www.ms.akadns.net

主机www.microsoft.com 拥有以下IP 地址:

AddressFamily:InterNetwork Address:207.46.170.10

AddressFamily:InterNetwork Address:65.55.21.250

AddressFamily:InterNetwork Address:207.46.170.123

AddressFamily:InterNetwork Address:65.55.12.249

注意:

Dns 类中有些方法被废弃(Obsolete )了,使用它时注意一下编译器给出的警告信息。

为了方便起见,我们将获取本地主机IPv4 地址的功能封装为一个静态方法,并将其放入到一个AddressHelper 静态类中:

public static class AddressHelper

{

public static IPAddress[] GetLocalhostIPv4Addresses()

{

String LocalhostName = Dns.GetHostName();

IPHostEntry host = Dns.GetHostEntry(LocalhostName);

List<IPAddress> addresses=new List<IPAddress>();

foreach (IPAddress ip in host.AddressList)

{

if (ip.AddressFamily == AddressFamily.InterNetwork)

addresses.Add(ip);

}

return addresses.ToArray();

}

// ……

}

再把上述这个类添加到一个MyNetworkLibrary 类库中,此类库将用于封装一些常用的功能,后续文章中的示例将直接使用它。

==============================

点击以下链接阅读本文最后一个部分:

“.NET 4.0 网络开发入门之旅系列文章”—— IP 知多少?(下)

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics