C#网络编程
1. WebClient类    1
(1) WebClient类的主要方法    1
(2) DownloadData()方法    1
(3) OpenRead()方法    1
(4) UploadData()方法    2
(5) 总结WebClient类    2
2. WebRequest类与WebResponse类    2
(1) WebRequest类与WebResponse类简介    2
(2) 使用示例    2
(3) WebRequest类与WebResponse类的子类(继承结构)    2
(4) HttpWebRequest类与HttpWebResponse类使用示例    3
(5) 身份验证    3
(6) 使用代理    3
(7) 异步请求    4
3. WebBrowser控件    4
(1) 使用WebBrowser控件    4
(2) WebBrowser控件常用属性、方法与事件    4
4. 网络工具类(URL、IP、DNS)    5
(1) Uri与UriBuilder    5
(2) IPAddress、IPHostEntry 与Dns    5
(3) 解码与编码(Encoding)    6
5. 底层的网络协议类    6
(1) Socket    6
(2) NetworkStream、TcpClient与TcpListener    7
(3) UdpClient    8
(4) SmtpClient    9
作者:李志伟
时间:2014-02-07
1.WebClient
(1)WebClient类的主要方法
DownloadXXX()方法:下载URI资源文件
OpenXXX()方法:打开URI资源流
UploadXXX()方法:上传资源到URI
(2)DownloadData()方法
    class Program
    {
        staticurl编码和utf8区别 void Main(string[] args)
        {
            WebClient web = new WebClient();
            byte[] temp = web.DownloadData("www.baidu");//下载URI资源文件
            string Response = Encoding.UTF8.GetString(temp);//解码
            Console.WriteLine(Response);
            Console.Read();
        }
    }
(3)OpenRead()方法
    class Program
    {
        static void Main(string[] args)
        {
            WebClient web = new WebClient();
            Stream st = web.OpenRead("www.baidu");//打开URI资源流
            StreamReader sr = new StreamReader(st);
            string Response = sr.ReadToEnd();
            Console.WriteLine(Response);
            Console.Read();
        }
    }
(4)UploadData()方法
    class Program
    {
        static void Main(string[] args)
        {
            WebClient web = new WebClient();
            string str = "李志伟";
            byte[] response =
web.UploadData("www.baidu", Encoding.Default.GetBytes(str));
            Console.WriteLine(Encoding.Default.GetString(response));//解码
            Console.Read();
        }
}
上传数据时出现问题,百度报错!这是因为没有权限。
(5)总结WebClient
虽然WebClient类使用简单,但是其功能有限,特别是不能使用它提供身份验证证书。这样,在上传数据时问题就出现了,许多站点不接受没有身份验证的上传文件。这是由于We
bClient类是非常一般的类,可以使用任意协议发送请求和接受响应(如:HTTPFTP)。但它不能处理特定于任何协议的任何特性,例如,专用于HTTPcookie。如果想利用这些特性就需要使用WebRequest类与WebResponse类为基类的一系列类。
2.WebRequest类与WebResponse
(1)WebRequest类与WebResponse类简介
WebRequest类与WebResponse类是抽象类,其子类对象代表某个特定URI协议的请求对象或响应对象。调用WebRequest.Create()方法得到WebResponse对象。调用WebResponse对象的GetResponse()方法得到WebResponse对象。
(2)使用示例
    class Program
    {
        static void Main(string[] args)
        {
            WebRequest req = WebRequest.Create("www.baidu");//得到请求对象
            WebResponse res = req.GetResponse();//得到相应对象
            Stream strm = res.GetResponseStream();//得到相应数据流
            StreamReader sr = new StreamReader(strm);
            Console.WriteLine(sr.ReadToEnd());
            Console.Read();
        }
    }
(3)WebRequest类与WebResponse类的子类(继承结构)
(4)HttpWebRequest类与HttpWebResponse类使用示例
    class Program
    {
        static void Main(string[] args)
        {
            string uri = "www.baidu";
            HttpWebRequest httpRe = (HttpWebRequest)HttpWebRequest.Create(uri);
            HttpWebResponse httpRes = (HttpWebResponse)httpRe.GetResponse();
            Stream strm = httpRes.GetResponseStream();//得到相应数据流
            StreamReader sr = new StreamReader(strm);
            Console.WriteLine(sr.ReadToEnd());
            Console.Read();
        }
}
这里以HTTP协议为例使用了对应了类,其他协议的类的使用方法与此类似。
(5)身份验证
如果需要把身份验证证书附带在请求中,就使用WebRequest类中的Credentials属性。
    class Program
    {
        static void Main(string[] args)
        {
            WebRequest req = WebRequest.Create("www.baidu");//得到请求对象
            NetworkCredential cred = new NetworkCredential("userName", "password");
            req.Credentials = cred;//调用GetResponse()之前赋值
            WebResponse res = req.GetResponse();//得到相应对象
            Stream strm = res.GetResponseStream();//得到相应数据流
            StreamReader sr = new StreamReader(strm);
            Console.WriteLine(sr.ReadToEnd());
            Console.Read();
        }
    }
(6)使用代理
使用代理服务器需要用到WebRequest类中的Proxy属性,以及WebProxy对象。
    class Program
    {
        static void Main(string[] args)
        {
            WebRequest req = WebRequest.Create("www.baidu");//得到请求对象
            NetworkCredential cred = new NetworkCredential("userName", "password","Domain");
            WebProxy wp = new WebProxy("192.168.1.100", true);//设置代理服务器地址
            req.Credentials = cred;//调用GetResponse()之前赋值

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。