使用套接字通过代理将请求从客户端转发到服务器c#

我有定制的tcp服务器监听端口5888(虚拟端口)。 代理服务器侦听传入的连接。 当代理接收到HTTP请求时,它应该将相同的请求中继到不同的服务器。

例如:

代理收到:http://proxyserver.com/mypage.html代理应该中继:http://MainServer.com/mypage.html

主服务器的响应应直接发送给请求客户端。

我已经使用套接字接受连接并解析原始HTTP请求,然后将新的HTTP请求转发给主服务器。 这变得太复杂了,因为我必须将原始HTTP请求发送到主服务器,获取响应并将其发送到客户端机器。代理服务器基本成为中间人。 我希望代理仅用于通信的一方,即将主机地址更改为主服务器,然后主服务器应负责将响应发送给请求客户端。

如何实现这一目标?


HTTP通过从客户端发起到服务器的TCP连接进行工作。 在代理存在的情况下,您至少需要两个连接 - 一个从客户端到代理服务器,另一个从代理服务器到服务器。 这两个连接在某种意义上是“独立的”,它们都传输标准的HTTP请求和响应。 此处的代理服务器充当终端服务器的客户端。

您需要至少涉及三个TCP连接,并且需要在与发起HTTP请求的连接不同的连接上发送HTTP响应。 这超出了HTTP本身的范围 - 客户端不会知道它需要其他地方的第二个连接,以及如何将一个连接上的请求与另一个连接上的响应进行匹配。 你可以在HTTP中做的最好的事情就是重定向到一个不同的服务器,比如说一个特殊的生成的URL或者其他东西。

请记住,HTTP响应必须与原始请求具有相同的TCP连接。

链接地址: http://www.djcxy.com/p/62489.html

上一篇: Relay a request from client to Server via Proxy using sockets c#

下一篇: How to create a simple proxy in C#?