您的位置:首页 > 编程语言 > C#

用C#实现Web代理服务器2

2005-04-16 20:25 295 查看
三、C#实现Web代理服务程序

  经过了上面的介绍,我想大家对代理服务应该有了一个基本的认识,下面就让我们通过一个实例来深入体会一下如何用C#实现Web代理服务。Web代理服务的功能顺序是这样的:

  (1)侦听端口,等待客户端浏览器发送来的Web请求信息。

  (2)接收到客户端Web请求信息后,解析出目标Web服务器的地址,并创建一个Socket实例,并以此实例连接Web服务器上。

  (3)通过创建的Socket传送客户端的Web请求数据包到Web服务器的80端口。

  (4)接收Web服务器返回的页面数据。

  (5)把接收来的数据传送到客户端,从而实现Web代理。

  客户端对某个Web地址的浏览,可能要传送很多的Web请求信息(比如网页中的图像、Flash等),为了更快更准确地处理这些信息,Web代理服务程序通常采用多线程来处理每一个Web请求。细心的读者可能会发现,处理每一个客户端的Web请求信息,代理服务器软件都要使用二个Socket,一个是用来接收/传送客户机的信息,一个是和Web服务器进行交流。为了区分这二个Socket,我们把和服务器对话的称为“服务Socket”,和客户端机器对话的称为“客户Socket”。

  下面就开始Web代理服务程序的编写工作。这个实例包含三个部分内容:

  1.创建一个Web代理类。

  2.Web代理服务的类的实例化。

  3.如何通过这个Web代理类的实例实现Web代理服务。

  (一)创建一个Web代理类

  具体操作步骤如下:

  1.启动Visual Studio.Net,依次选择“文件”、“新建”、“项目”菜单后,在弹出“新建项目”对话框中将“项目类型”设置为“Visual C#项目”,将“模板”设置为“Windows应用程序”,在“名称”文本框中输入“WebProxy”,在“位置”文本框中输入“E:\VS.NET项目”,然后单击“确定”按钮,这样项目便建立好了。

  2.依次选择菜单“项目”、“添加类”,将弹出“添加新项”对话框。

  3.将“模板”设置为“类”。

  4.在“名称”文本框中输入“Proxy”,单击“打开”按钮,具体如图2所示:

  5.在“解决方案资源管理器”窗口中,双击Proxy.cs文件,进入Proxy.cs文件的编辑界

  6.在Proxy.cs源文件的开头,添加下列代码,下列代码是导入Proxy.cs中要使用到的命名空间:

  using System;

  using System.Net;

  using System.Net.Sockets;

  using System.Text;

  using System.IO;

  7.用下列构造函数替代默认的构造函数。下面的代码是在Proxy类中创建一个构造函数。Proxy类只有一个构造函数,并且这个构造函数只有一个参数,这个参数是Socket对象,它主要用来和客户端进行数据交换,是一个“客户Socket”:

  public Proxy(Socket socket)

  {

  //

  // TODO: 在此处添加构造函数逻辑

  //

  this.clientSocket = socket ;

  }

  8.在定义Proxy类代码区中加入下列代码,下列代码是定义Proxy类中的使用的一些变量,这些变量主要是在后面的定义Run方法中使用。

  Socket clientSocket;

  Byte[] read = new byte[1024];

  //定义一个空间,存储来自客户端请求数据包

  Byte [] Buffer = null;

  Encoding ASCII = Encoding.ASCII;

  //设定编码

  Byte[] RecvBytes = new Byte[4096];

  //定义一个空间,存储Web服务器返回的数据
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: