“.NET 4.0 网络开发入门之旅系列文章”—— IP 知多少?(中)
来源:互联网 发布:淘宝采集软件违规吗 编辑:程序博客网 时间:2024/05/22 17:32
“.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),可以看到通过它不仅可以获取指定主机的所有IPv4和IPv6地址,还可以知道它的主机名(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 知多少?(下)
- “.NET 4.0 网络开发入门之旅系列文章”—— IP 知多少?(中)
- “.NET 4.0网络开发入门之旅系列文章”——IP知多少(上)
- “.NET 4.0 网络开发入门之旅系列文章”—— IP 知多少?(下)
- “.NET 4.0 网络开发入门之旅系列文章”—— IP 知多少?
- “.NET 4.0网络开发入门之旅系列文章”开篇语——无网不胜
- “.NET 4.0网络开发入门之旅系列文章”开篇语—— 无网不胜(上)
- “.NET 4.0网络开发入门之旅系列文章”开篇语—— 无网不胜(下)
- “.NET 4.0网络开发入门之旅系列文章”开篇语—— 无网不胜(上)
- “.NET 4.0网络开发入门之旅系列文章”开篇语 无网不胜(续)
- “.NET 4.0网络开发入门之旅系列文章”我在“网” 中央(上)
- “.NET 4.0网络开发入门之旅系列”--我在“网” 中央
- 《.NET 4.0网络开发入门之旅》7——填平缓冲区陷阱
- .NET 4.0网络开发入门之旅——我在“网” 中央
- GPRS开发系列文章之入门篇
- GPRS开发系列文章之入门篇
- GPRS开发系列文章之入门篇
- GPRS开发系列文章之入门篇
- GPRS开发系列文章之入门篇
- 谁能告诉我怎么修改win7文件夹属性?
- Effective C++ 总结1 从C转向C++(条款1 - 4)
- 抉择
- 基于 DeepZoom技术的Bing Maps客户端实现研究
- smarty日期时间
- “.NET 4.0 网络开发入门之旅系列文章”—— IP 知多少?(中)
- GridView 实现服务器端和客户端全选的两种方法
- MySql创建函数
- weblogic admin 不能重起服务(Server may already be running)
- Effective C++ 总结1 从C转向C++(条款1 - 4)
- IE的layout属性详解
- Graphics
- GridView 实现服务器端和客户端全选的两种方法
- 测试技术不断细分