问题描述
有SSL_Server和SSL_Client,该服务器只能与一个客户端一起使用。当客户端关闭连接时,服务器关闭当前连接并再次开始侦听端口,以等待客户端的新连接。我想在async_shutdown处理程序中关闭当前连接,然后再次开始侦听该端口。我不太了解如何正确执行此操作。
据我了解,处理程序注册应该在握手中
socket_->async_handshake(boost::asio::ssl::stream_base::server,[this](const boost::system::error_code& error)
{
if (!error)
{
boost::system::error_code ec;
socket_->async_shutdown(std::bind(&SSL_Server::shutdown_connection,this,std::ref(ec)));
do_read();
}
});
处理程序
void SSL_Server::shutdown_connection(boost::system::error_code&ec)
{
if (!ec)
{
std::cout << "Shutdown Connection\n";
do_accept();
}
}
客户端关闭连接
void SSL_Client::shutdown_connection_event()
{
boost::system::error_code ec;
std::cout << "Client shutdown connection!!!\n";
m_socket->lowest_layer().shutdown(boost::asio::ip::tcp::socket::shutdown_both,ec);
m_socket->lowest_layer().close(ec);
}
当我握手时进行async_shutdown调用时
客户端应该是什么样子,服务器应该是什么样子。抱歉,无礼))
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)