【问题标题】:boost::asio handshake through http proxy?boost::asio 通过 http 代理握手?
【发布时间】:2011-03-06 00:24:52
【问题描述】:

对 boost 和 asio 还很陌生,需要帮助:

  1. 连接到代理 asio::ip::tcp::socket socket_;

  2. 发送 CONNECT 主机:ssl 服务器到代理 receive response 200

  3. asio::ssl::context ctx(io_service, asio::ssl::context::sslv23); sslsocket_(socket_,context)
  4. 尝试握手 sslsocket_.async_handshake(asio::ssl::stream_base::client, boost::bind(&client::handle_handshake, this, asio::placeholders::error));

  5. 并得到 asio.ssl 错误 Wireshark: host sends FIN after 1st message of handshake

到 ssl 服务器的直接异步连接工作正常,通过 Proxifier 也是如此

【问题讨论】:

    标签: c++ boost ssl tcp boost-asio


    【解决方案1】:

    您可能需要在第 5 步中检查 OpenSSL 错误堆栈,这并不容易,因为 Boost.Asio 没有将其映射到它使用的正常 system_error 代码中。 Guy Sirton 最近在 asio 邮件列表中有一个 post,描述了如何修改源代码来实现这一点。

    【讨论】:

      【解决方案2】:

      忘了说是在VMplayer 中使用NAT 网络运行应用程序;桥接消除了初始握手的问题,但有时在重新连接后看到相同的消息; 在握手期间使用 Sam 的链接中的方法得到“意外记录” - 谷歌在这个错误中说关于重新谈判,但事实并非如此;挖掘 OpenSSL 的来源:新连接使用相同的 BIO 来读取和接收来自先前连接的应用程序数据 不知道怎么用 asio 重置 SSL 结构,所以用 new|delete 做了动态套接字分配

      【讨论】:

        猜你喜欢
        • 2023-01-26
        • 2021-11-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-15
        • 2013-01-01
        相关资源
        最近更新 更多