由 rm::Acceptor 或 rm::Connector 建立的流式 Socket 会话
更多...
#include <rmvl/io/socket.hpp>
|
| bool | invalid () const noexcept |
| | 会话是否失效
|
| SocketFd | native_handle () const noexcept |
| | 获取底层 Socket 描述符
|
| template<typename SockOpt> |
| void | setOption (const SockOpt &opt) |
| | 设置 Socket 选项
|
| Endpoint | endpoint () const |
| | 获取绑定的端点
|
| std::string | read () noexcept |
| | 同步读取已连接的 Socket 中的数据(阻塞)
|
| bool | write (std::string_view data) noexcept |
| | 同步写入数据到已连接的 Socket 中(阻塞)
|
| bool | multiwrite (const std::vector< std::string_view > &buffers) noexcept |
| | 同步多缓冲区写入
|
| template<typename... Args, typename Enable = std::enable_if_t<(sizeof...(Args) > 0) && (std::is_constructible_v<std::string_view, Args> && ...)>> |
| bool | multiwrite (Args &&...args) noexcept |
| | 同步多缓冲区写入
|
| std::vector< std::string > | multiread (const std::vector< size_t > &sizes) |
| | 同步多缓冲区读取
|
| template<typename... Args, typename Enable = std::enable_if_t<(sizeof...(Args) > 0) && (std::is_convertible_v<Args, size_t> && ...)>> |
| std::vector< std::string > | multiread (Args... sizes) |
| | 同步多缓冲区读取
|
| size_t | read_to (char *buf, size_t size) noexcept |
| | 同步读取数据到指定预分配内存中
|
| void | close () noexcept |
| | 手动关闭 Socket 会话,一般情况无需调用,除非需要提前释放资源
|
◆ close()
| void rm::StreamSocket::close |
( |
| ) |
|
|
noexcept |
手动关闭 Socket 会话,一般情况无需调用,除非需要提前释放资源
◆ endpoint()
| Endpoint rm::StreamSocket::endpoint |
( |
| ) |
const |
◆ invalid()
| bool rm::StreamSocket::invalid |
( |
| ) |
const |
|
inlinenodiscardnoexcept |
◆ multiread() [1/2]
template<typename... Args, typename Enable = std::enable_if_t<(sizeof...(Args) > 0) && (std::is_convertible_v<Args, size_t> && ...)>>
| std::vector< std::string > rm::StreamSocket::multiread |
( |
Args... | sizes | ) |
|
|
inline |
同步多缓冲区读取
auto data_parts = socket.multiread(5, 10, 15);
- 模板参数
-
- 参数
-
◆ multiread() [2/2]
| std::vector< std::string > rm::StreamSocket::multiread |
( |
const std::vector< size_t > & | sizes | ) |
|
同步多缓冲区读取
auto data_parts = socket.multiread({5, 10, 15});
- 参数
-
- 返回
- 读取到的数据分片数组(遇到异常或断开时,返回的 vector 会少于期望分片或包含空串)
◆ multiwrite() [1/2]
template<typename... Args, typename Enable = std::enable_if_t<(sizeof...(Args) > 0) && (std::is_constructible_v<std::string_view, Args> && ...)>>
| bool rm::StreamSocket::multiwrite |
( |
Args &&... | args | ) |
|
|
inlinenoexcept |
同步多缓冲区写入
bool success = socket.multiwrite("Hello,", " ", "World!");
- 模板参数
-
| Args | 可变参数包,要求每个参数都能构造为 std::string_view |
- 参数
-
◆ multiwrite() [2/2]
| bool rm::StreamSocket::multiwrite |
( |
const std::vector< std::string_view > & | buffers | ) |
|
|
noexcept |
◆ native_handle()
| SocketFd rm::StreamSocket::native_handle |
( |
| ) |
const |
|
inlinenodiscardnoexcept |
◆ read()
| std::string rm::StreamSocket::read |
( |
| ) |
|
|
noexcept |
同步读取已连接的 Socket 中的数据(阻塞)
auto str = socket.read();
- 返回
- 使用 std::string 存储的读取到的数据
◆ read_to()
| size_t rm::StreamSocket::read_to |
( |
char * | buf, |
|
|
size_t | size ) |
|
noexcept |
同步读取数据到指定预分配内存中
- 参数
-
| [out] | buf | 预分配内存的首地址 |
| [in] | size | 预期读取的字节数 |
- 返回
- 实际读取的字节数
◆ setOption()
template<typename SockOpt>
| void rm::StreamSocket::setOption |
( |
const SockOpt & | opt | ) |
|
◆ write()
| bool rm::StreamSocket::write |
( |
std::string_view | data | ) |
|
|
noexcept |
同步写入数据到已连接的 Socket 中(阻塞)
bool success = socket.write("Hello, World!");
- 参数
-
- 返回
- 是否写入成功
◆ _fd