1#ifndef NEFORCE_NETWORK_SSL_SSL_SOCKET_HPP__
2#define NEFORCE_NETWORK_SSL_SSL_SOCKET_HPP__
14NEFORCE_BEGIN_NAMESPACE__
180 NEFORCE_NODISCARD
bool is_ssl() const noexcept
override {
return ssl_.has_value(); }
189 NEFORCE_THROW_EXCEPTION(
ssl_exception(
"SSL stream not initialized"));
201 NEFORCE_THROW_EXCEPTION(
ssl_exception(
"SSL stream not initialized"));
209NEFORCE_END_NAMESPACE__
bool close() noexcept override
关闭SSL连接和底层socket
void init_server_ssl(const ssl_context &ctx)
初始化服务器端SSL
ssl_socket(tcp_socket sock)
从TCP socket转移构造
ssize_t send(memory_view< const char > data, int flags=0) override
发送加密数据
ssl_stream & ssl()
获取SSL流对象的引用
ssl_socket(const native_handle_type fd)
从原生句柄构造
ssl_socket()=default
默认构造函数
string get_alpn_negotiated() const
获取ALPN协商的协议名称
const ssl_stream & ssl() const
获取SSL流对象的常量引用
bool is_ssl() const noexcept override
检查是否为SSL/TLS socket
ssize_t receive(memory_view< char > buffer, int flags=0) override
接收解密数据
string peer_certificate_info() const
获取对等方证书信息
~ssl_socket() override=default
析构函数
void init_client_ssl(const ssl_context &ctx, const string &hostname="")
初始化客户端端SSL
tcp_socket & operator=(tcp_socket &&)=default
移动赋值运算符
tcp_socket()=default
默认构造函数
void * native_handle_type
系统句柄类型
constexpr Iterator2 move(Iterator1 first, Iterator1 last, Iterator2 result) noexcept(noexcept(inner::__move_aux(first, last, result)))
移动范围元素
constexpr decltype(auto) data(Container &cont) noexcept(noexcept(cont.data()))
获取容器的底层数据指针