代理服务器的问题:怎么把请求发给INTERNET,又怎么取回INTERNERT返回的数据?(20分)

8

8341

Unregistered / Unconfirmed
GUEST, unregistred user!
我想做个代理服务器,目前粗知其原理。我可以截获由客户机发来的请求(用idtcpserver)比如:
get http://www.csdn.net http1.0。但是我怎么把这个请求发给INTERNET,又怎么
把INTERNET返回的数据取来呢?应该很简单,可我不会,请大侠教我!分不多了,见谅。
 
大家来看看呀!
是否直接用IdTCPServer1.write('GET http://www.csdn.net HTTP1.0');
还是用webbrowse等控件:
 
呵呵!明显的错误。你做的是代理,是把客户端的请求发送给服务器
接收到请求后,用TcpClient将接收到的请求发送给服务器就行了。
例如用TcpServer接收客户端(浏览器)的数据,用TcpClient发送给web服务器。
中间接收到的数据要注意转换,不能直接发送 'GET http://www.csdn.net HTTP1.0',发送的应该是GET / HTTP1.0
其他的HTTP头自己加上去就行
 
多谢stvsoft!
“例如用TcpServer接收客户端(浏览器)的数据,用TcpClient发送给web服务器。
中间接收到的数据要注意转换,不能直接发送 'GET http://www.csdn.net HTTP1.0',发送
的应该是GET / HTTP1.0”

用TcpClient发送给web服务器,如果发送的是“GET/HTTP1.0”,那么,它的地址www.csdn.net
应该放在哪里发呢?
 
如果你写的是代理服务器。那么客户端发给你的代理服务器的数据就是
GET http://www.csdn.net HTTP1.0
...
Host: www.csdn.net

你可以从Host字段获取主机地址,用ClientSocket连接上,然后发送如下内容:
GET / HTTP1.0
...
那个Host和GET主要是留给你的代理服务器获取WEB服务器地址的。
你用www.csdn.net作为地址连接上服务器,还把'www.csdn.net'发送给服务器干嘛!
当然,有些情况下发送了也不会出错。
 
多谢多谢!我基本上明白了。欢迎大家再来讨论!
 
接受答案了.
 
顶部