Http代理前后的不同之处

winsock实现HTTP代理提交HTTP请求的方法有两种
1、直接请求
2、先连通远程服务器后就相普通提交请求一样提交HTTP请求

说一下第一种方法:


先说一下我们普通的提交HTTP请求的过程:
直接连接远程服务器后,当连接成功时向服务器提交HTTP头,注意看看大概的格式
GET / HTTP/1.1
Accept: */*
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Host: www.baidu.com
Connection: Keep-Alive


再看看使用代理的连接方法
先连接代理服务器(IP地址、端口),然后向代理服务器提交这样的HTTP头
GET http://www.baidu.com/ HTTP/1.0
Accept: */*
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Host: www.baidu.com
Proxy-Connection: Keep-Alive


区别
就这么一点,
1、连接的不是目标服务器的IP地址和端口而是代理服务器IP地址和端口
2、提交的不是相对的地址而是绝对的HTTP地址
3、Connection: Keep-AliveProxy-Connection: Keep-Alive区别

再说说第二种方法:

其实这种方法很强大,他除了可以实现HTTP协议的代理,还可以实现其他TCP/IP协议的处理。
如:POP2、SMTP、FTP等等
先看看理论把,其实就是客户端连接代理服务器后,让代理服务器去连接远程服务器,当代理服务器连接好远程服务器
成功后,会返回连接结果给客户端,这时客户端判断结果,如果连接成功了就直接发送正常的数据给代理,代理收到数据
后立刻转发给服务器,其实就是个中转站。就是开始连接的时候不同,后面所有的通讯可以照常操作

客户端先连接代理服务器,然后向代理服务器提交请求,告诉他要连接到哪:
CONNECT www.baidu.com:80 HTTP/1.1
Accept: */*
Content-Type: text/html
Proxy-Connection: Keep-Alive
Content-length: 0

这时,如果代理服务器连接成功会返回这样一段信息(客户端收到的信息,注意,不要这个时候断开连接哟,呵呵)
HTTP/1.0 200 Connection established
Proxy-agent: CCProxy 6.4.2    '这里是代理程序的名称,看你的是什么代理软件


这时你就可以发出正常的请求了
GET / HTTP/1.1
Accept: */*
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Host: www.baidu.com
Connection: Keep-Alive

然后就可以收到远程服务器发过来的网页信息了

如何判断返回的消息接收完了呢?有时候消息会分成几段来返回

这个要看协议的,如果是HTTP协议,可以有两种方式判断。
1、通过Content-length的值判断要接收的数据大小,数据够了就断开连接,注意,HTTP头的数据大小不算。
2、在HTTP换上Connection: Close,由服务器发送完服务器自动断开,不用你去判断什么时候该断开
  你就管收数据,收到 Close事件时断开连接就可以了。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值