| RMVL 2.4.0 Robotic Manipulation and Vision Library

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

由 rm::async::Listener 建立的数据报式 Socket 异步会话 更多...

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

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

## 类
class | SocketReadAwaiter
| 数据报式 Socket 异步读等待器 更多...
class | SocketWriteAwaiter
| 数据报式 Socket 异步写等待器 更多...

## Public 成员函数
SocketReadAwaiter | read ()
| 异步读取已连接的 Socket 中的数据
SocketWriteAwaiter | write (std::string_view addr, const Endpoint &endpoint, std::string_view data)
| 异步写入数据到已连接的 Socket 中
SocketWriteAwaiter | write (std::array< uint8_t, 4 > addr, const Endpoint &endpoint, std::string_view data)
| 异步写入数据到的 IPv4 的 Socket 中
Public 成员函数 继承自 rm::DgramSocket
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 属性 继承自 rm::DgramSocket
SocketFd | _fd {INVALID_SOCKET_FD}
| 会话文件描述符

## 详细描述

由 rm::async::Listener 建立的数据报式 Socket 异步会话

## 成员函数说明

## ◆ read()

SocketReadAwaiter rm::async::DgramSocket::read | ( |  | ) |
| inline

异步读取已连接的 Socket 中的数据

// 使用示例
auto [data, addr, port] = co_await socket.read();

返回
  读取到的数据

返回值

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

函数调用图:

## ◆ write() [1/2]

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

异步写入数据到的 IPv4 的 Socket 中

// 使用示例
bool success = co_await 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]

SocketWriteAwaiter rm::async::DgramSocket::write | ( | std::string_view | addr,
|  | const Endpoint & | endpoint,
|  | std::string_view | data )
| inline

异步写入数据到已连接的 Socket 中

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

参数

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

返回
  是否写入成功

函数调用图: