【发布时间】:2016-10-21 12:56:13
【问题描述】:
基本上有代码可以对服务器进行 http 调用并处理响应,但我想保护数据传输并进行 https 调用。
为此,我有这个 executor.hpp
class Executor
{
public :
Executor(Cli &cli):ssock(svc)
{
//! Get a list of endpoints corresponding to the server name.
boost::asio::ip::tcp::resolver resolver(svc);
boost::asio::ip::tcp::resolver::query query(cli.getIP(), "8080");
endpoint_iterator = resolver.resolve(query);
}
int connect();
int write(RequestCreator &requestcreator);
boost::asio::ssl::stream<boost::asio::ip::tcp::socket> &getSocket() { return ssock; }
private :
boost::asio::io_service svc;
boost::asio::ssl::context ctx(svc, ssl::context::method::sslv23_client);
boost::asio::ssl::stream<boost::asio::ip::tcp::socket> ssock(svc, ctx);
boost::asio::ip::tcp::resolver::iterator endpoint_iterator;
};
还有这个 executor.cpp
int Executor::connect()
{
boost::system::error_code ec ;
boost::asio::connect(ssock.lowest_layer(), endpoint_iterator );
ssock.handshake(boost::asio::ssl::stream_base::handshake_type::client);
if (ec)
{
ssock.lowest_layer().close();
svc.stop();
return 0;
}
return 1;
}
int Executor::write(RequestCreator &requestCreator)
{
boost::system::error_code ec ;
boost::asio::write(ssock, requestCreator.getRequest(), ec);
if (ec)
{
ssock.lowest_layer().close();
svc.stop();
return 0;
}
return 1;
}
以下是编译器的完整错误
c:\cygwin64\home\admin\sandbox\webcli\executor.hpp(30) : error C2061: syntax error : identifier 'svc'
c:\cygwin64\home\admin\sandbox\webcli\executor.hpp(31) : error C2061: syntax error : identifier 'svc'
c:\cygwin64\home\admin\sandbox\webcli\executor.hpp(15) : error C2436: 'ssock' : member function or nested class in constructor initializer list
c:\cygwin64\home\admin\sandbox\webcli\executor.hpp(25) : error C3867: 'Executor::ssock': function call missing argument list; use '&Executor::ssock' to create a pointer to member
c:\cygwin64\home\admin\sandbox\webcli\executor.hpp(25) : error C2440: 'return' : cannot convert from 'boost::asio::ssl::stream<Stream> (__cdecl Executor::* )(void)' to 'boost::asio::ssl::stream<Stream> &'
with
[
Stream=boost::asio::ip::tcp::socket
]
【问题讨论】:
-
你……没有问问题。
-
我看到了编辑。让我们阅读
-
好的,我已经读过了。这个问题是无法解决的。没有任何代码有意义,并且错误根本与“代码”无关。看我的回答。
-
与其转储代码,不如考虑花费额外的时间和精力来提供格式清晰的minimal reproducible example。它可以帮助每个人的时间更有效率,甚至可以帮助您在此过程中自行解决问题。例如,here 是基于相关代码的 MCVE。
-
我现在在病房里会记住这一点,谢谢! @TannerSansbury 但你能说出代码有什么问题吗?我的意思是错误
标签: c++ ssl boost boost-asio