提升和asio相当新,需要帮助:
连接到代理
asio::ip::tcp::socket socket_;
将CONNECT主机:ssl服务器发送到代理
receive response 200
asio::ssl::context ctx(io_service, asio::ssl::context::sslv23);
sslsocket_(socket_,context)
尝试握手
sslsocket_.async_handshake(asio::ssl::stream_base::client, boost::bind(&client::handle_handshake, this, asio::placeholders::error));
并收到asio.ssl错误
Wireshark: host sends FIN after 1st message of handshake
与ssl服务器的直接异步连接工作正常,通过Proxifier
答案 0 :(得分:1)
您可能需要在步骤5中检查OpenSSL错误堆栈,由于Boost.Asio没有将其映射到它使用的正常system_error代码,因此这并非常简单。 Guy Sirton最近在asio邮件列表上有一个post,描述了如何修改源代码以实现此目的。
答案 1 :(得分:1)
忘了提到在使用NAT网络的VMplayer中运行应用程序; bridged通过初始握手解决了问题,但有时在重新连接后看到相同的消息; 使用Sam的链接中的方法在握手期间得到了“意外记录” - 谷歌说这个关于重新谈判的错误但事实并非如此;挖掘OpenSSL的来源:新连接使用相同的BIO来读取和接收来自先前连接的应用程序数据 不知道如何用asio重置SSL结构,所以用new | delete
进行动态套接字分配