RMVL  2.5.0-dev
Robotic Manipulation and Vision Library
载入中...
搜索中...
未找到
rm::StreamSocket类 参考

rm::Acceptorrm::Connector 建立的流式 Socket 会话 更多...

#include <rmvl/io/socket.hpp>

类 rm::StreamSocket 继承关系图:
rm::StreamSocket 的协作图:

Public 成员函数

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 会话,一般情况无需调用,除非需要提前释放资源

Protected 属性

SocketFd _fd {INVALID_SOCKET_FD}
 会话文件描述符

详细描述

rm::Acceptorrm::Connector 建立的流式 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);
模板参数
Args
参数
[in]sizes预期读取的各分片数据大小
函数调用图:

◆ multiread() [2/2]

std::vector< std::string > rm::StreamSocket::multiread ( const std::vector< size_t > & sizes)

同步多缓冲区读取

// 使用示例
auto data_parts = socket.multiread({5, 10, 15});
参数
[in]sizes预期读取的各分片数据大小
返回
读取到的数据分片数组(遇到异常或断开时,返回的 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
参数
[in]args待写入的多个数据参数包
函数调用图:

◆ multiwrite() [2/2]

bool rm::StreamSocket::multiwrite ( const std::vector< std::string_view > & buffers)
noexcept

同步多缓冲区写入

参数
[in]buffers待写入的多个数据视图
返回
是否全部写入成功
函数调用图:

◆ native_handle()

SocketFd rm::StreamSocket::native_handle ( ) const
inlinenodiscardnoexcept

获取底层 Socket 描述符

◆ read()

std::string rm::StreamSocket::read ( )
noexcept

同步读取已连接的 Socket 中的数据(阻塞)

// 使用示例
auto str = socket.read();
定义 str.hpp:19
返回
使用 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)

设置 Socket 选项

参数
[in]optSocket 选项

◆ write()

bool rm::StreamSocket::write ( std::string_view data)
noexcept

同步写入数据到已连接的 Socket 中(阻塞)

// 使用示例
bool success = socket.write("Hello, World!");
参数
[in]data待写入的数据
返回
是否写入成功
函数调用图:

类成员变量说明

◆ _fd

SocketFd rm::StreamSocket::_fd {INVALID_SOCKET_FD}
protected

会话文件描述符