如何用C#获得本机的IP地址

C#可以通过调用.Net FrameWork SDK封装的类、对象来实现许多强大的网络功能。在.Net FrameWork SDK中提供了二个可用于网络编程的名称空间,一个是System.Net,另一个是System.Net.Socket。本文只讲解如何利用System.Net名称空间中封装的类和对象来获得本地计算机名称和机器中的IP地址。

对于一台计算机来说,计算机名称只能有一个,但是可以有多个IP地址。例如当计算机通过ADSL拨号上网时(使用RJ45网线接口的ADSL Modem),在验证完用户名和口令以后,就会被动态分配一个IP地址,此时计算机就拥有了二个IP地址,一个是局域网用的IP地址,另一个就是拨号上网刚刚动态分配的IP地址。

获得计算机IP信息的核心程序代码如下(本文代码运行在Microsoft Visual Studio 2005中的C#编程环境下):

IPAddress[] hostipspool = Dns.GetHostAddresses(string hostNameOrAddress);

在System.Net命名空间下的Dns类中定义了一个方法IPAddress[] GetHostAddresses (string hostNameOrAddress)(注意:此方法在 .NET Framework 2.0 版中是新增的)。此方法返回指定主机的 Internet 协议 (IP) 地址(该返回值是一个 IPAddress 类型的数组,保存由 hostNameOrAddress 参数指定的主机的所有 IP 地址),其中的参数hostNameOrAddress是要解析的主机名或 IP 地址。

Microsoft Visual Studio 2005中的联机帮助中是这样说明的:“GetHostAddresses 方法在 DNS 服务器中查询与某个主机名关联的 IP 地址。如果 hostNameOrAddress 是 IP 地址,则不查询 DNS 服务器直接返回此地址。当空字符串作为主机名传递时,对于除 Windows Server 2003 以外的所有操作系统,此方法都返回本地主机的 IPv4 地址;对于 Windows Server 2003,则同时返回本地主机的 IPv4 和 IPv6 地址。”

所以如果只是查询本机的IP地址,可以使用以下语句:

IPAddress[] hostipspool = Dns.GetHostAddresses(“”);

使用以下语句则可以循环读取出本机的每一个IP地址信息:
    
     string hostperip;
     for (int i = 0; i < thishostipaddr.Length; i++)
     {
          hostperip = thishostipaddr[i].
ToString();
     }

在上面所说的计算机通过ADSL拨号上网后,thishostipaddr[0].ToString()是本机的局域网IP地址,thishostipaddr[1].ToString()是拨号上网动态分配的IP地址。

 

猜你喜欢

转载自blog.csdn.net/lkfstar/article/details/2118816