C#中IPAddress类/Dns类/IPHostEntry类用法简介

C#IPAddress/Dns/IPHostEntry类用法简介

 

IP是一种普遍应用于因特网、允许不同主机能够相互找到对方的寻址协议。IP地址由4个十进制的数字号码所组成,而每一个号码的值介于0~255之间,它虽然解决了网络上计算机的识别问题,但是IP地址确不容易记,因此域名系统(DNS)被开发出来,它专门用于将IP地址转换成有意义的文字,以方便识别记忆。

  .Net FrameWork类库内置了相关类用于处理IP地址的问题,这些类在System.Net命名空间下。这里主要对DNS类进行详细介绍。

IPAddress类提供了对IP地址的转换、处理等功能。其Parse方法可将IP地址字符串转换为IPAddress实例。

如:IPAddress ip = IPAddress.Parse(“192.168.1.1”); 

 

IPAddress   类提供了7个只读字段:

Any        表示本地系统可用的任何IP地址

Broadcast   表示本地网络的IP广播地址

IPv6Any    Socket.Bind方法用此字段指出本地系统可用的IP地址

IPv6Loopback    表示系统的回送地址

IPv6None     表示系统上没有可用的网络接口

Loopback    表示系统的回送地址

None   表示系统上没有可用的网络接口

 

Dns类提供了一系列静态的方法,用于获取提供本地或远程域名等功能,常用方法有: 

1) GetHostAddresses方法

获取指定主机的IP地址,返回一个IPAddress类型的数组。

函数原形为:

public static IPAddress[] GetHostAddresses(string hostNameOrAddress);

例如:

IPAddress[] ip=Dns.GetHostAddresses("www.cctv.com");

listBox1.Items.AddRange(ip);

 

2) GetHostName方法

获取本机主机名。例如:string hostname = Dns.GetHostName();

 

IPHostEntry类的实例对象中包含了Internet主机的相关信息。

常用属性有:AddressList属性和HostName属性。

AddressList属性作用:获取或设置与主机关联的IP地址列表,是一个IPAddress类型的数组,包含了指定主机的所有IP地址;HostName属性则包含了服务器的主机名。

 

Dns类中,有一个专门获取IPHostEntry对象的方法,通过IPHostEntry对象,可以获取本地或远程主机的相关IP地址。

  例如:

listBox1.Items.Add("搜狐新闻所用的服务器IP地址有:");

IPAddress[] ip = Dns.GetHostEntry("news.sohu.com").AddressList;

listBox1.Items.AddRange(ip);

listBox1.Items.Add("本机IP地址为:");

ip = Dns.GetHostEntry(Dns.GetHostName()).AddressList;

listBox1.Items.AddRange(ip);

 

C#中,IPEndPoint类包含了应用程序连接到主机上的服务所需的IP地址和端口信息。 

IPEndPoint类常用的构造函数为:public IPEndPoint(IPAddress, int);

        其中第一个参数指定IP地址,第二个参数指定端口号。

:  IPAddress类、Dns类、IPHostEntry类和IPEndPoint类的使用方法。 

 

下面对比较重要的方法进行详细介绍。

 

  (1)GetHostAddresses方法

 

  返回指定主机的Internet协议(IP)地址。

 

  语法:

 

 

 

public static IPAddress[] GetHostAddresses (
  string hostNameOrAddress
)

 

 

 

  参数:

 

  hostNameOrAddress:要解析的主机名或IP地址。

 

  返回值:一个IPAddress类型的数组,该类型保存由hostNameOrAddress参数指定的主机的IP地址。

 

  (2)GetHostByAddress方法

 

  获取IP地址的DNS主机信息(以发生成重载),重载方法为为Dns.GetHostByAddress (IPAddress)和Dns.GetHostByAddress (String),下面分别进行介绍。

 

  l     Dns.GetHostByAddress (IPAddress)

 

  根据指定的IPAddress创建IPHostEntry实例。

 

  语法:

 

 

 

public static IPHostEntry GetHostByAddress
(
  IPAddress address
)

 

 

 

  参数:

 

  address:一个IPAddress。

 

  返回值:一个IPHostEntry。

 

  l     Dns.GetHostByAddress (String)

 

  根据IP地址创建IPHostEntry实例。

 

  语法:

 

 

 

public static IPHostEntry GetHostByAddress
(
  string address
)

 

 

 

  参数:

 

  address:IP地址。

 

  返回值:一个IPHostEntry实例。

 

  (3)GetHostName方法

 

  获取本地计算机的主机名。

 

  语法:

 

  public static string GetHostName ()

 

  返回值:包含本地计算机的DNS主机名的字符串。

 

  (4)Resolve方法

 

  将DNS主机名或IP地址解析为IPHostEntry实例。

 

  语法:

 

 

 

public static IPHostEntry Resolve
(
  string hostName
)

 

 

 

  参数:

 

  hostName:DNS样式的主机名或IP地址。

 

  返回值:一个IPHostEntry实例,包含有关hostName中指定的主机的地址信息。

 

  下面列举几种常用的DNS类的使用方法。

 

  获得主机名的实现代码如下:

 

 

 

   private void button1_Click(object sender, EventArgs e)
    {
      String hostName = Dns.GetHostName();
      IPHostEntry ipH = new IPHostEntry();
      ipH = Dns.Resolve(hostName);
      this.textBox1.Text = hostName;
    }

 

 

 

  根据IP或计算机名获得计算机名的实现代码如下:

 

 

 

 private void button2_Click(object sender, EventArgs e)
    {
      IPHostEntry hostInfo = Dns.Resolve(this.textBox1.Text.Trim().ToString());
      string strHost = hostInfo.HostName.ToString();
      MessageBox.Show(strHost);
    }

 

 

 

  获得IP列表的实现代码如下:

 

 

 

private void button4_Click(object sender, EventArgs e)
    {
      IPHostEntry IPH = Dns.GetHostByName(this.textBox1.Text);
      IPAddress[] myIp = IPH.AddressList;
      foreach (IPAddress ips in myIp)
        MessageBox.Show(ips.ToString());
    }

 // DNS类:在.net中的System.net命名空间下,主要的功能是从 Internet 域名系统 (DNS) 检索关于特定主机的信息。
 // IPHostEntry类:将一个域名系统 (DNS) 主机与一组别名和一组匹配的 IP 地址关联,和DNS类一起使用。
 // IPAddress 类:IP 网络上的地址。

1、一个域名只能绑定一个网站,多个域名可以绑定同一个站点
2、一个域名可以免费分出10个子域名,超过10要另收费,每个子域名都是相互独立的
3、子域名的申请和解悉都要到你的域名所在服务商(万网\新网\其它)提供的域名管理平台上操作
4、子域名绑定要在空间服务商的平台下操作
5、如果只有一个空间,可以考虑URL重写
posted on 2014-07-16 18:25  libaby  阅读(1569)  评论(0)    收藏  举报