gpt4 book ai didi

c++ - 客户端通过Http代理服务器连接服务器(Windows c\c++)

转载 作者:行者123 更新时间:2023-11-28 05:52:41 33 4
gpt4 key购买 nike

我们有一个C\S模型程序。用户使用客户端连接我们的服务器。但有些公司用户通过HTTP代理服务器上网(不是SOCKS4或SOCKS5代理服务器)。在这种情况下,我们需要提供一个功能来设置客户端代理服务器(就像其他软件一样)。如果这样做,我们应该将我们的原始数据打包到 Http 协议(protocol)中。所以我想知道:

  1. 方法好吗?或者有其他更好的方法来解决问题。
  2. 如果这样做,我们的服务器是否可以主动向客户端发送数据?
  3. 你知道其他发布的具有设置代理服务器功能的软件如何处理这个问题吗?

最佳答案

HTTP 代理不是这样工作的。您不必将现有数据重新打包为 HTTP。您需要做的就是:

  1. 连接到 HTTP 代理端口,并向其发送一个 HTTP CONNECT 请求,指定要连接的主机/IP 和端口,例如:

    CONNECT hostname:port HTTP/1.0
    User-agent: MyApp

    如果代理需要身份验证,您还可以根据需要提供包含编码凭据的 Proxy-authorization header ,例如:

    CONNECT hostname:port HTTP/1.0
    User-agent: MyApp
    Proxy-authorization: basic dGVzdDp0ZXN0
  2. 如果代理接受请求并成功连接到请求的主机,它会发回一个 HTTP 200 回复,例如:

    HTTP/1.0 200 Connection established
    Proxy-agent: ProxyApp/1.1
  3. 您现在可以像以前一样发送和接收数据,代理将按原样在客户端和主机之间双向传递数据。除了建立代理连接外,您无需更改任何代码逻辑。

参见 Tunneling TCP based protocols through Web proxy servers了解更多详情。

此过程类似于其他代理协议(protocol)的工作方式,例如 SOCKS。客户端连接到代理,请求连接到服务器主机,然后客户端和服务器来回传递数据,就好像代理不存在一样。

关于c++ - 客户端通过Http代理服务器连接服务器(Windows c\c++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34902385/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com