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重写
浙公网安备 33010602011771号