2

我有一个客户端/服务器设置,可以使用 boost 的 asio 套接字相互通信。该协议很简单,它以一个 64 位值开始,告诉后面的数据有多长,其余的以 JSON 形式出现。

问题是,它不支持客户端和服务器之间的代理,现在我们需要支持它。

正如我在网上看到的,看起来代理一般都很简单。对于 HTTP 代理,您可以联系代理并向其发送 CONNECT 请求以获取您想要的实际 URL,然后它会继续传递信息。

但我还不明白如何将它与我的非 HTTP 数据相协调。

  1. 我是否需要更改我的“协议”以使其与代理服务器一起使用?我看到这个建议:

    CONNECT http://my.server.com:80 HTTP/1.0\r\n\r\n

    但是我的非协议怎么办?

  2. 我试过告诉它我正在使用 HTTP,然后接下来发送 JSON 数据,但遇到了一系列问题,以至于我不知道问题是我的实现还是我的问题我试图做的根本行不通。

  3. 如果我在这里完全脱离基地,我很想被理顺。

4

1 回答 1

0

我不认为搭载 HTTP 代理是正确的解决方案。现在你有

Client <---------> Server

但是你想要

Client <------> proxy <------> Server

我建议自己编写代理。它将像您的服务器一样是一个守护进程,并且应该同时使用您的客户端和服务器协议。协议可能需要修改,以便代理知道服务器地址和服务。同样,客户端将需要其他信息来连接到代理而不是服务器。

于 2013-02-16T14:57:58.510 回答