原文来源:《C#从入门到精通》
1、System.Net命名空间
System.Net命名空间为当前网络上使用的多种协议提供了简单的编程接口,而它所包含的WebRequest类和WebResponse类形成了所谓的可插接式协议的基础。可插接式协议是网络服务的一种实现,它使用户能够开发出使用Internet资源的应用程序,而不必考虑各种不同协议的具体细节。
1、Dns类
Dns类是一个静态类,它从Internet域名系统(DNS)检索关于特定主机的信息。在IPHostEntry类的实例中返回来自DNS查询的主机信息。如果指定的主机在DNS数据库中有多个入口,则IPHostEntry包含多个IP地址和别名。
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == string.Empty)
{
MessageBox.Show("请输入主机地址!");
}
else
{
textBox2.Text = string.Empty;
IPAddress[] ips = Dns.GetHostAddresses(textBox1.Text); //获取指定主机的IP地址
foreach (IPAddress ip in ips) //循环访问获得的IP地址
{
textBox2.Text = ip.ToString(); //将得到的IP地址显示在文本框中
}
textBox3.Text = Dns.GetHostName(); //获取主机名
textBox4.Text = Dns.GetHostByName(Dns.GetHostName()).HostName;
}
}
2、IPAddress类
IPAddress类包含计算机在IP网络上的地址,它主要用来提供网际协议(IP)地址。
3、IPEndPoint类
private void button1_Click(object sender, EventArgs e)
{
//实例化IPEndPoint类对象
IPEndPoint IPEPoint = new IPEndPoint(IPAddress.Parse(textBox1.Text), 80);
//使用IPEndPoint类对象获取终结点的IP地址和端口号
textBox2.Text = "IP地址:" + IPEPoint.Address.ToString() + "\n端口号:" + IPEPoint.Port;
}
4、WebClient类
private void button1_Click(object sender, EventArgs e)
{
richTextBox1.Text = string.Empty;
WebClient wclient = new WebClient(); //实例化WebClient类对象
wclient.BaseAddress = textBox1.Text; //设置WebClient的基URI
wclient.Encoding = Encoding.UTF8; //指定下载字符串的编码方式
//为WebClient类对象添加报头
wclient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
//使用OpenRead方法获取指定网站的数据,并保存到Stream流中
Stream stream = wclient.OpenRead(textBox1.Text);
//使用流StreamReader声明一个流读取变量sreader
StreamReader sreader = new StreamReader(stream);
string str = string.Empty;//声明一个变量,用来保存一行从WebClient下载的数据
//循环读取从指定网站获得的数据
while ((str = sreader.ReadLine()) != null)
{
richTextBox1.Text = str + "\n";
}
//调用WebClient对象的DownloadFile方法将指定网站的内容保存到文件中
wclient.DownloadFile(textBox1.Text, DateTime.Now.ToFileTime() + ".txt");
MessageBox.Show("保存到文件成功");
}
5、WebRequest类和WebResponse类
WebRequest类是.NET Framework的请求/响应模型的抽象基类,用于访问Internet数据。使用该请求/响应模型的应用程序可以用协议不可知的方式从Internet请求数据。
说明:客户端应用程序不直接创建WebResponse对象,而是通过对WebRequest实例调用GetResponse方法来进行创建。
private void button1_Click(object sender, EventArgs e)
{
richTextBox1.Text = string.Empty;
//1、实例化一个WebRequest对象
WebRequest webrequest = WebRequest.Create(textBox1.Text);
//2、设置用于对Internet资源请求进行身份验证的网络凭据
webrequest.Credentials = CredentialCache.DefaultCredentials;
//3、调用WebRequest对象的各种属性获取WebRequest请求的相关信息
richTextBox1.Text = "请求数据的内容长度:" + webrequest.ContentLength;
richTextBox1.Text += "\n 该请求的协议方法:" + webrequest.Method;
richTextBox1.Text += "\n 访问Internet的网络代理:" + webrequest.Proxy;
richTextBox1.Text += "\n 与该请求关联的Internet URI:" + webrequest.RequestUri;
richTextBox1.Text += "\n 超时时间:" + webrequest.Timeout;
//4、调用WebRequest对象的GetResponse方法实例化一个WebResponse对象
WebResponse webresponse = webrequest.GetResponse();
//5、获取WebResponse响应的Internet资源的URI
richTextBox1.Text += "\n响应该请求的Internet URI:" + webresponse.ResponseUri;
//6、调用WebResponse对象的GetResponseStream方法返回数据流
Stream stream = webresponse.GetResponseStream();
//7、使用创建的Stream对象创建一个StreamReader流读取对象
StreamReader sreader = new StreamReader(stream);
//8、读取流中的内容,并显示在RichTextBox控件中
richTextBox1.Text = "\n" + sreader.ReadToEnd();
sreader.Close();
stream.Close();
webresponse.Close();
}