.NET网络编程常用类
IPHostEntry类
通过Dns解析IP地址可以获得IPHostEntry实例,这个实例中包含了一个IP地址的主机名、地址以及别名。其中IP地址存储在IPAddress类中。
请求和响应
在System.Net名字空间下有进行HTTP请求和文件访问的类,它们是HttpWebRequest,HttpWebResponse,FileWebRequest,FileWebResponse。
请求和响应需要定义相关权限,需要用到WebPermission以及WebPermiAttribute。用户可以使用WebClient更容易的使用WebRequest和WebResponse,使用WebClient可以让用户方便下载文件以及上传文件到服务器。
示例1:
Uri uri = new Uri("http://www.baidu.com");
WebRequest request = WebRequest.Create(uri);
WebResponse response = request.GetResponse();
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream);
string line;
while ((line
= reader.ReadLine()) != null)
{
Console.WriteLine(line);
}
response.Close();
reader.Close();
示例2:
private void
buttonOpenFile_Click(object sender,
System.EventArgse)
{
string fileName = textFileOpen.Text;
FileWebRequest request =
(FileWebRequest)WebRequest.Create(fileName);
Stream stream =
request.GetResponse().GetResponseStream();
StreamReader reader = new
StreamReader(stream);
textData.Text =
reader.ReadToEnd();
reader.Close();
}
连接管理
ServicePoint和ServicePointManager在HTTP连接中扮演重要角色。与一个URI相关的ServicePoint实例可以控制多个连接。ServicePointManager可以创建新的ServicePoint或者找到已经创建的ServicePoint实例。
Cookies
存放在客户端的Cookies用来记录请求的一些信息,可以被服务器使用。当我们从一个Web服务器中进行带Cookies的请求时,我们可以通过HttpWebResponse的Cookies属性返回的CookieCollection类中获得需要的Cookies信息。当然我们也可以使用CookieContainer将cookies信息传给服务器。
代理服务器
使用WebProxy类我们可以指定Internet请求所使用的代理服务器。使用GlobalProxySelection类,我们可以定义全局的默认请求代理,除非我们特殊设置其请求属性。
Sockets
在System.Net.Sockets名字空间下有socket编程相关的类。Socket可以提供基于连接的TCP访问以及无连接的UDP访问。
URI
URI在System名字空间下。通用资源标示符,指定网络资源的位置。
Uri baseUri = new Uri("http://msdn.microsoft.com");
Uri newUri = new Uri(baseUri, "code/default.asp");
可以使用UriBuilder来修改Uri信息,类似string和StringBuilder。
IPAddress
IPAddress用来存储IP地址信息。
IPAddress address = IPAddress.Parse("204.148.170.161");
预定义IPAddress:
IPAddress.None 用来定义一个不可监听客户端的服务器
IPAddress.Loopback 环回地址
IPAddress.Broadcast 广播地址
Dns
域名地址解析。使用Resolve方法返回IPHostEntry实例。解析地址不仅可以使用同步的方法,也可以使用异步的方法。
using System;
using
System.Net;
using
System.Net.Sockets;
namespace Hello
{
class Program
{
static void Main(string[] args)
{
string address = "www.baidu.com";
Dns.BeginGetHostEntry(address, new AsyncCallback(DnsLoopUpCompleted),
null);
Console.WriteLine("Waiting
for the result...");
Console.ReadKey();
}
public static void DnsLoopUpCompleted(IAsyncResult
ar)
{
IPHostEntry hostEntry = Dns.EndGetHostEntry(ar);
Console.WriteLine("IP
Addresses for {0}: ", hostEntry);
foreach (IPAddress
address in hostEntry.AddressList)
Console.WriteLine(address.ToString());
Console.WriteLine("\nAlias
names:");
foreach (string
aliasName in hostEntry.Aliases)
Console.WriteLine(aliasName);
Console.WriteLine("\nAnd
the real hostname:");
Console.WriteLine(hostEntry.HostName);
}
}
}