由 rm::Listener 或 rm::Sender 建立的数据报式 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 |
| | 获取绑定的端点
|
| RecvData | read () noexcept |
| | 同步读取 Socket 中的数据(阻塞)
|
| bool | write (std::string_view addr, const Endpoint &endpoint, std::string_view data) noexcept |
| | 同步写入数据到的 Socket 中(阻塞)
|
| bool | write (std::array< uint8_t, 4 > addr, const Endpoint &endpoint, std::string_view data) noexcept |
| | 同步写入数据到的 IPv4 的 Socket 中(阻塞)
|
| bool | multiwrite (std::string_view addr, const Endpoint &endpoint, const std::vector< std::string_view > &buffers) noexcept |
| | 同步多缓冲区写入
|
| bool | multiwrite (std::array< uint8_t, 4 > addr, const Endpoint &endpoint, const std::vector< std::string_view > &buffers) noexcept |
| | 同步多缓冲区写入到 IPv4 的 Socket 中(阻塞)
|
| template<typename... Args, typename Enable = std::enable_if_t<(sizeof...(Args) > 0) && (std::is_constructible_v<std::string_view, Args> && ...)>> |
| bool | multiwrite (std::string_view addr, const Endpoint &endpoint, Args &&...args) noexcept |
| | 同步多缓冲区写入
|
| template<typename... Args, typename Enable = std::enable_if_t<(sizeof...(Args) > 0) && (std::is_constructible_v<std::string_view, Args> && ...)>> |
| bool | multiwrite (std::array< uint8_t, 4 > addr, const Endpoint &endpoint, Args &&...args) noexcept |
| MultiRecvData | multiread (const std::vector< std::size_t > &sizes) |
| | 同步多缓冲区读取
|
| template<typename... Args, typename Enable = std::enable_if_t<(sizeof...(Args) > 0) && (std::is_convertible_v<Args, size_t> && ...)>> |
| MultiRecvData | multiread (Args... sizes) |
| RecvtoData | read_to (char *buf, size_t size) noexcept |
| | 同步读取数据到预分配内存中
|
由 rm::Listener 或 rm::Sender 建立的数据报式 Socket 会话
◆ endpoint()
| Endpoint rm::DgramSocket::endpoint |
( |
| ) |
const |
◆ invalid()
| bool rm::DgramSocket::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> && ...)>>
◆ multiread() [2/2]
| MultiRecvData rm::DgramSocket::multiread |
( |
const std::vector< std::size_t > & | sizes | ) |
|
同步多缓冲区读取
- 参数
-
- 返回
- 读取到的数据分片数组,发送方 IP,发送方端口
◆ multiwrite() [1/4]
template<typename... Args, typename Enable = std::enable_if_t<(sizeof...(Args) > 0) && (std::is_constructible_v<std::string_view, Args> && ...)>>
| bool rm::DgramSocket::multiwrite |
( |
std::array< uint8_t, 4 > | addr, |
|
|
const Endpoint & | endpoint, |
|
|
Args &&... | args ) |
|
inlinenoexcept |
◆ multiwrite() [2/4]
| bool rm::DgramSocket::multiwrite |
( |
std::array< uint8_t, 4 > | addr, |
|
|
const Endpoint & | endpoint, |
|
|
const std::vector< std::string_view > & | buffers ) |
|
noexcept |
同步多缓冲区写入到 IPv4 的 Socket 中(阻塞)
- 参数
-
| [in] | addr | 使用数组形式表示的 IPv4 目标地址 |
| [in] | endpoint | 目标端点 |
| [in] | buffers | 待写入的多个数据视图 |
- 返回
- 是否写入成功
◆ multiwrite() [3/4]
template<typename... Args, typename Enable = std::enable_if_t<(sizeof...(Args) > 0) && (std::is_constructible_v<std::string_view, Args> && ...)>>
| bool rm::DgramSocket::multiwrite |
( |
std::string_view | addr, |
|
|
const Endpoint & | endpoint, |
|
|
Args &&... | args ) |
|
inlinenoexcept |
同步多缓冲区写入
Protocol v4()
构造端点,以表示 IPv4 UDP 协议
- 模板参数
-
| Args | 可变参数包,要求每个参数都能构造为 std::string_view |
- 参数
-
| [in] | addr | 目标地址 |
| [in] | endpoint | 目标端点 |
| [in] | args | 待写入的多个数据参数包 |
◆ multiwrite() [4/4]
| bool rm::DgramSocket::multiwrite |
( |
std::string_view | addr, |
|
|
const Endpoint & | endpoint, |
|
|
const std::vector< std::string_view > & | buffers ) |
|
noexcept |
同步多缓冲区写入
- 参数
-
| [in] | addr | 目标地址 |
| [in] | endpoint | 目标端点 |
| [in] | buffers | 待写入的多个数据视图 |
- 返回
- 是否写入成功
◆ native_handle()
| SocketFd rm::DgramSocket::native_handle |
( |
| ) |
const |
|
inlinenodiscardnoexcept |
◆ read()
同步读取 Socket 中的数据(阻塞)
auto [
str, addr, port] = socket.read();
- 返回
- 读取到的数据
- 返回值
-
| data | 读取的数据 |
| addr | 发送方地址 |
| port | 发送方端口 |
◆ read_to()
| RecvtoData rm::DgramSocket::read_to |
( |
char * | buf, |
|
|
size_t | size ) |
|
noexcept |
同步读取数据到预分配内存中
- 参数
-
| [in] | buf | 预分配内存的首地址 |
| [in] | size | 预期读取的字节数 |
- 返回
- 实际读取的字节数,发送方 IP,发送方端口
◆ setOption()
template<typename SockOpt>
| void rm::DgramSocket::setOption |
( |
const SockOpt & | opt | ) |
|
◆ write() [1/2]
| bool rm::DgramSocket::write |
( |
std::array< uint8_t, 4 > | addr, |
|
|
const Endpoint & | endpoint, |
|
|
std::string_view | data ) |
|
noexcept |
同步写入数据到的 IPv4 的 Socket 中(阻塞)
- 参数
-
| [in] | addr | 使用数组形式表示的 IPv4 目标地址 |
| [in] | endpoint | 目标端点 |
| [in] | data | 待写入的数据 |
- 返回
- 是否写入成功
◆ write() [2/2]
| bool rm::DgramSocket::write |
( |
std::string_view | addr, |
|
|
const Endpoint & | endpoint, |
|
|
std::string_view | data ) |
|
noexcept |
同步写入数据到的 Socket 中(阻塞)
- 参数
-
| [in] | addr | 目标地址 |
| [in] | endpoint | 目标端点 |
| [in] | data | 待写入的数据 |
- 返回
- 是否写入成功
◆ _fd