Net Ftamework的System.Net 命名空间为各种网络协议提供了简单的编程接口,并且封装了很多用于通信的,这里简单的介绍几个比较重要的类
IPAddress类:
作用提供对IP地址的转化,处理的功能,该类提供的Parse方法可以将IP地址字符串转化为IPAddress实例
如:
IPAddress ip = IPAddress.Parse("192.168.1.1");
DNS类
DNS类实现的功能是对域名的解析,即把主机域名解析成为IP地址,或者吧IP地址解析成为主机名,常用方法如下:
1.GetHostAddress();该方法能够提取指定的主机的IP地址,返回一个IPAddress类型的数组
IPAddress[] i = Dns.GetHostAddresses("www.cctv.com");
2.GetHostName();该方法返回的是主机名
string name = Dns.GetHostName();//获取主机名
IPHostEntry类
这个类包含了Internet主机的相关信息,常用的属性有两个,一个是AddressList,另一个是HostName,其中前一个的作用是获得或者设置与主机相关联的IP列表,这是一个Address类型的数组,包含了指定主机在内的所有IP地址,而HostName则半酣了服务器的主机名字
IPEndpoint类
在Interent中,Tcp/Ip使用一个IP地址和一个端口号来唯一标识设备和服务,IP地址表示网络上设备,端口号标识特定的服务,而Ip地址与端口号的组合称为端点,我们使用IPEndPoint的实例来标识这个端点,他包含了应用程序链接到主机上的服务所需的Ip地址和端口信息
方法Public IPEndPoint(IPAddress,int)
Demo:
在Window窗体上创建三个Button,一个Label,一个txtbox,一个listbox
重新设置名称与位置如图
分别为button设置点击事件
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnResult_Click(object sender, EventArgs e)
{
lstResult.Items.Clear();
string name = Dns.GetHostName();//获取主机名
lstResult.Items.Add("name" + name);//显示
IPHostEntry me = Dns.GetHostEntry(name);//获取IP地址,需要主机名
lstResult.Items.Add("本机所有IP地址:");//IPHostEntry me = Dns.GetHostEntry(name);所获取的IP是一个组
//所以在输出的时候遍历输出
foreach (IPAddress ip in me.AddressList)
{
lstResult.Items.Add(ip);//显示本机所有的IP地址
}
}
private void btnRemote_Click(object sender, EventArgs e)//点击获得服务器的信息,需要用DNS来解析
{
lstResult.Items.Clear();
IPHostEntry host = Dns.GetHostEntry(txtRemote.Text);
IPAddress[] rip = host.AddressList;
lstResult.Items.Add(host.HostName);//获取主机的DNS名
lstResult.Items.AddRange(rip);//向列表中添加对象数组,类似于显示
}
private void btnEndPoint_Click(object sender, EventArgs e)
{
lstResult.Items.Clear();
IPAddress ip = IPAddress.Parse("127.0.0.1");//将字符串解析为IP地址
IPEndPoint p = new IPEndPoint(ip, 80);//创建通信端点
lstResult.Items.Add("TCP端点是:"+p.ToString());
lstResult.Items.Add("该端点的IP地址是"+p.Address);
lstResult.Items.Add("该端点的IP地址族是:"+p.AddressFamily);
lstResult.Items.Add("Tcp的最大端口号是:"+IPEndPoint.MaxPort);
lstResult.Items.Add("TCP的最小端口号是:"+IPEndPoint.MinPort);
}
}
}
效果: