HTTP 代理服务器在 Windows 下的实现 本文将详细介绍 HTTP 代理服务器在 Windows 平台下的实现过程,包括代理服务器的建立过程、程序框架结构、数据分析函数和线程函数等内容。 一、HTTP 代理服务器的建立过程 HTTP 代理服务器的建立过程可以分为以下七步: 1. Proxy 启动监听 Browser 的连接申请 2. Proxy 接受 Browser 的申请,Browser 向 Proxy 发数据 3. Proxy 解析 Browser 发的数据,确定服务类型和服务器地址 4. Proxy 连接服务器 5. Proxy 启动 B_P_S 线程,该线程负责 Browser 把数据传到 Proxy,再由 Proxy 传到 Server 6. B_P_S 线程启动 S_P_B 线程,该线程负责 Server 把数据传到 Proxy,再由 Proxy 传到 Client 7. 传输完毕结束 B_P_S 线程和 S_P_B 线程 二、程序框架结构 HTTP 协议是各部分单独连接传送的,Web 页面中的每个文本、图片都是作为独立单元传送的。为了提高 Proxy 的效率,防止主程序阻塞,特意启动三级线程。 主线程在 Proxy 端口监听 Browser 的申请,然后启动 B_P_S 线程;B_P_S 线程负责接受每个 Browser 的申请(每个 B_P_S 都是独立的),在完成 Browser 到 Server 单向数据传送的同时启动 S_P_B 线程,然后由 S_P_B 线程完成 Server 到 Browser 的单向数据传送。 三、数据分析函数 数据分析函数的主要功能是分析 Browser 发给 Proxy 的数据,确定服务类型和服务器相关信息。客户机向服务器申请接受 HTTP 数据,它发出的 HTTP 命令格式第一行一般是:命令---URL---协议。 Proxy 程序需要通过查找“URL”中的“http://”串确定是否是 HTTP 服务,从 URL 部分中解析到 Web 服务器的地址,作为 Proxy 连接的目的地址。同时将“http://服务器地址”部分从 URL 部分剔除,这样可以避免某些 Web 服务器重定向 URL。 int GetAddressAndPort( char * str, char *address, int * port) { //读出“Get”、“http://202.196.48.9/index.htm”和“HTTP1.0” 分别存入 s_Cmd,s_Server,s_Pro //在 s_Pro 中查找“http://”如果没有找到,则表示非 HTTP 服务,返回-1 //*port=80 HTTP 缺省端口 //从 s_Server 中解析地址“202.196.48.9”存入*str //把*str 中的服务器地址去掉,即“Get http://202.196.48.9/index.htm HTTP } 四、B_P_S 线程函数和 S_P_B 线程函数 B_P_S 线程函数负责 Browser 把数据传到 Proxy,再由 Proxy 传到 Server。S_P_B 线程函数负责 Server 把数据传到 Proxy,再由 Proxy 传到 Client。 本文仅对 HTTP 代理服务器在 Windows 平台下的实现过程进行了简要介绍,包括代理服务器的建立过程、程序框架结构、数据分析函数和线程函数等内容。
- 粉丝: 87
- 资源: 36
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助