linux c下的一个简易http代理程序

http代理服务器原理不复杂,就是将客户端浏览器传过来的http协议头再转发给web服务器,将web服务器返回的数据再转发给客户端浏览器,起了一个中转站的作用。

如下是一个http协议头的例子:

GET http://www.google.com.hk/ HTTP/1.1
Host: www.google.com.hk
Proxy-Connection: keep-alive
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.70 Safari/533.4
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3


协议头后面有个空行。

代理服务器的作用就是将这段数据发送给”Host:“后面指定的地址,这里是"www.google.com.hk"。另外,因为这是浏览器传给代理程序的协议头,所以第三行是:“Proxy-Connection: keep-alive”,如果直接连接web服务器,就要使用“Connection: keep-alive”。

根据以上原理,程序如下:

 

        这段程序基本实现了代理的功能,但只是个雏形,还很不完善,例如从web服务器获取数据传送给浏览器客户端的时候,使用的阻塞串行方法,即从web服务器获取数据和发送数据到客户端同一时刻只能进行一个,最好是当程序给浏览器发送数据的时候,继续从web服务器接收数据。当然,如果代理程序所在主机和web服务器或浏览器客户端任何一方网络连接速度很快,例如和代理客户端在同一局域网内,这种影响不大。

        另外,程序不稳定,只代理几个网页程序就会退出,但没有报错。不过打个谷歌之类的网页问题不大。这个程序实用价值不大,只用来研究。

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值