C++ boost::asio::async\u接受未调用处理程序
以boost为例 正是在组装的过程中,它开始工作。 然后将实现从接口带到SSL_Server.h、SSL_Server.cpp、Session.h、Session.cpp,main将其带到Serv.cpp 因此,不会调用处理程序!!!我不明白原因是什么 SSL_Server.hC++ boost::asio::async\u接受未调用处理程序,c++,boost,asio,C++,Boost,Asio,以boost为例 正是在组装的过程中,它开始工作。 然后将实现从接口带到SSL_Server.h、SSL_Server.cpp、Session.h、Session.cpp,main将其带到Serv.cpp 因此,不会调用处理程序!!!我不明白原因是什么 SSL_Server.h #ifndef SSL_SERVER #define SSL_SERVER #define BOOST_ASIO_ENABLE_HANDLER_TRACKING #include "Session.h&q
#ifndef SSL_SERVER
#define SSL_SERVER
#define BOOST_ASIO_ENABLE_HANDLER_TRACKING
#include "Session.h"
#include <functional>
#include <iostream>
#include <boost/asio.hpp>
#include <boost/asio/ssl.hpp>
using boost::asio::ip::tcp;
class SSL_Server
{
public:
SSL_Server(boost::asio::io_context& io_context, unsigned short port);
private:
void do_accept();
std::string get_password() const;
private:
tcp::acceptor acceptor_;
boost::asio::ssl::context context_;
};
#endif
Serv.cpp
#include "Server_SSL.h"
int main(int argc, char* argv[])
{
if (argc != 2)
{
std::cerr << "Usage: server <port>\n";
return 1;
}
boost::asio::io_context io_context;
SSL_Server s(io_context, 3333);
io_context.run();
return 0;
}
#包括“Server_SSL.h”
int main(int argc,char*argv[])
{
如果(argc!=2)
{
std::cerr我看不出代码有什么问题。事实上,它适合我。但是,您需要工作目录中存在的证书、密钥和DH param文件
我没有看到太多的显式错误处理,因此我认为这可能是您的问题:
context_.use_certificate_chain_file("server.crt", ec);
if (ec) throw boost::system::system_error(ec);
context_.use_private_key_file("server.key", boost::asio::ssl::context::pem, ec);
if (ec) throw boost::system::system_error(ec);
context_.use_tmp_dh_file("dh2048.pem", ec);
if (ec) throw boost::system::system_error(ec);
注
我使用了boost示例中的server.pem和dh2048.pem文件,因此
context_.use_certificate_chain_file("server.pem", ec);
if (ec) throw boost::system::system_error(ec);
context_.use_private_key_file("server.pem", boost::asio::ssl::context::pem, ec);
if (ec) throw boost::system::system_error(ec);
我看不出代码有什么问题。事实上,它适合我。但是,您需要工作目录中存在的证书、密钥和DH param文件
我没有看到太多的显式错误处理,因此我认为这可能是您的问题:
context_.use_certificate_chain_file("server.crt", ec);
if (ec) throw boost::system::system_error(ec);
context_.use_private_key_file("server.key", boost::asio::ssl::context::pem, ec);
if (ec) throw boost::system::system_error(ec);
context_.use_tmp_dh_file("dh2048.pem", ec);
if (ec) throw boost::system::system_error(ec);
注
我使用了boost示例中的server.pem和dh2048.pem文件,因此
context_.use_certificate_chain_file("server.pem", ec);
if (ec) throw boost::system::system_error(ec);
context_.use_private_key_file("server.pem", boost::asio::ssl::context::pem, ec);
if (ec) throw boost::system::system_error(ec);
context_.use_certificate_chain_file("server.pem", ec);
if (ec) throw boost::system::system_error(ec);
context_.use_private_key_file("server.pem", boost::asio::ssl::context::pem, ec);
if (ec) throw boost::system::system_error(ec);