| RMVL 2.4.0 Robotic Manipulation and Vision Library

载入中...
搜索中...
未找到
Public 成员函数 | Protected 属性 | 所有成员列表
rm::DgramSocket类 参考
数据 IO 与通信模块 » 网络通信

由 rm::Listener 或 rm::Sender 建立的数据报式 Socket 会话 更多...

`#include <rmvl/io/socket.hpp>`

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

## Public 成员函数
bool | invalid () const noexcept
| 会话是否失效
template<typename SockOpt>
void | setOption (const SockOpt &opt)
| 设置 Socket 选项
Endpoint | endpoint () const
| 获取绑定的端点
std::tuple< std::string, std::string, uint16_t > | 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 中（阻塞）

## Protected 属性
SocketFd | _fd {INVALID_SOCKET_FD}
| 会话文件描述符

## 详细描述

由 rm::Listener 或 rm::Sender 建立的数据报式 Socket 会话

## 成员函数说明

## ◆ endpoint()

Endpoint rm::DgramSocket::endpoint | ( |  | ) | const

获取绑定的端点

## ◆ invalid()

bool rm::DgramSocket::invalid | ( |  | ) | const
| inline nodiscard noexcept

会话是否失效

## ◆ read()

std::tuple< std::string, std::string, uint16_t > rm::DgramSocket::read | ( |  | ) |
| noexcept

同步读取 Socket 中的数据（阻塞）

// 使用示例
auto [str, addr, port] = socket.read();
rm::str
定义 str.hpp:19

返回
  读取到的数据

返回值

  data | 读取的数据
  addr | 发送方地址
  port | 发送方端口

## ◆ setOption()

template<typename SockOpt>

void rm::DgramSocket::setOption | ( | const SockOpt & | opt | ) |

设置 Socket 选项

参数

  [in] | opt | Socket 选项

## ◆ write() [1/2]

bool rm::DgramSocket::write | ( | std::array< uint8_t, 4 > | addr,
|  | const Endpoint & | endpoint,
|  | std::string_view | data )
| noexcept

同步写入数据到的 IPv4 的 Socket 中（阻塞）

// 使用示例
bool success = socket.write({192, 168, 1, 100}, rm::Endpoint(rm::ip::udp::v4(), 12345), "Hello, World!");
rm::Endpoint
端点
定义 socket.hpp:275
rm::ip::udp::v4
Protocol v4()
构造端点，以表示 IPv4 UDP 协议

参数

  [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 中（阻塞）

// 使用示例
bool success = socket.write("192.168.1.100", rm::Endpoint(rm::ip::udp::v4(), 12345), "Hello, World!");

参数

  [in] | addr | 目标地址
  [in] | endpoint | 目标端点
  [in] | data | 待写入的数据

返回
  是否写入成功

函数调用图:

## 类成员变量说明

## ◆ _fd

SocketFd rm::DgramSocket::_fd {INVALID_SOCKET_FD}
| protected

会话文件描述符