NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
ssl_socket.hpp
浏览该文件的文档.
1#ifndef NEFORCE_NETWORK_SSL_SSL_SOCKET_HPP__
2#define NEFORCE_NETWORK_SSL_SSL_SOCKET_HPP__
3
10
13NEFORCE_BEGIN_NAMESPACE__
14
19
73class NEFORCE_API ssl_socket final : public tcp_socket {
74private:
76
77public:
81 ssl_socket() = default;
82
87 explicit ssl_socket(const native_handle_type fd) :
88 tcp_socket(fd) {}
89
97 explicit ssl_socket(tcp_socket sock) :
98 tcp_socket(move(sock)) {}
99
100 ssl_socket(ssl_socket&& other) noexcept = default;
101 ssl_socket& operator=(ssl_socket&& other) noexcept = default;
102
106 ~ssl_socket() override = default;
107
116 void init_server_ssl(const ssl_context& ctx);
117
127 void init_client_ssl(const ssl_context& ctx, const string& hostname = "");
128
135 NEFORCE_NODISCARD string peer_certificate_info() const;
136
146 ssize_t send(memory_view<const char> data, int flags = 0) override;
147
157 ssize_t receive(memory_view<char> buffer, int flags = 0) override;
158
164 bool close() noexcept override;
165
170 NEFORCE_NODISCARD bool is_ssl() const noexcept override { return ssl_.has_value(); }
171
177 NEFORCE_NODISCARD ssl_stream& ssl() {
178 if (!ssl_) {
179 NEFORCE_THROW_EXCEPTION(ssl_exception("SSL stream not initialized"));
180 }
181 return *ssl_;
182 }
183
189 NEFORCE_NODISCARD const ssl_stream& ssl() const {
190 if (!ssl_) {
191 NEFORCE_THROW_EXCEPTION(ssl_exception("SSL stream not initialized"));
192 }
193 return *ssl_;
194 }
195};
196 // SSL/TLS
198
199NEFORCE_END_NAMESPACE__
200#endif // NEFORCE_NETWORK_SSL_SSL_SOCKET_HPP__
内存视图模板
可选值类
::UINT_PTR native_handle_type
平台原生句柄类型
SSL/TLS上下文管理类
SSL/TLS安全Socket类
ssize_t receive(memory_view< char > buffer, int flags=0) override
接收解密数据
ssl_socket()=default
默认构造函数
ssize_t send(memory_view< const char > data, int flags=0) override
发送加密数据
void init_server_ssl(const ssl_context &ctx)
初始化服务器端SSL
void init_client_ssl(const ssl_context &ctx, const string &hostname="")
初始化客户端端SSL
~ssl_socket() override=default
析构函数
ssl_stream & ssl()
获取SSL流对象的引用
ssl_socket(const native_handle_type fd)
从原生句柄构造
ssl_socket(tcp_socket sock)
从TCP socket转移构造
bool close() noexcept override
关闭SSL连接和底层socket
bool is_ssl() const noexcept override
检查是否为SSL/TLS socket
const ssl_stream & ssl() const
获取SSL流对象的常量引用
string peer_certificate_info() const
获取对等方证书信息
SSL/TLS流封装类
tcp_socket()=default
默认构造函数
int64_t ssize_t
有符号大小类型
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()))
获取容器的底层数据指针
SSL/TLS流封装
SSL操作异常
TCP Socket实现