| RMVL 2.4.0 Robotic Manipulation and Vision Library

载入中...
搜索中...
未找到
命名空间 | 类 | 类型定义 | 枚举 | 函数 | 变量
网络通信
数据 IO 与通信模块

提供跨平台的同步异步 Socket 通信、HTTP 请求、HTTP Web 后端框架功能 更多...

网络通信 的协作图:

## 命名空间
namespace | rm::ip
| IP 协议族，包含 IPv4 和 IPv6 以及多播选项的相关定义

## 类
struct | rm::URLParseInfo
| URL 解析结果 更多...
struct | rm::Request
| HTTP 请求结构 更多...
struct | rm::Response
| HTTP 响应结构 更多...
class | rm::async::Webapp
| Web 应用程序框架 更多...
struct | rm::NetworkInterfaceFlag
| 接口功能与状态标志 更多...
class | rm::NetworkInterface
| 网络接口 更多...
class | rm::Endpoint
| 端点 更多...
class | rm::DgramSocket
| 由 rm::Listener 或 rm::Sender 建立的数据报式 Socket 会话 更多...
class | rm::Sender
| 同步数据报式 Socket 发送器 更多...
class | rm::Listener
| 同步数据报式 Socket 监听器 更多...
class | rm::StreamSocket
| 由 rm::Acceptor 或 rm::Connector 建立的流式 Socket 会话 更多...
class | rm::Acceptor
| Socket 接受器 更多...
class | rm::Connector
| Socket 连接器 更多...
class | rm::async::DgramSocket
| 由 rm::async::Listener 建立的数据报式 Socket 异步会话 更多...
class | rm::async::Sender
| 异步数据报式 Socket 发送器 更多...
class | rm::async::Listener
| 异步数据报式 Socket 监听器 更多...
class | rm::async::StreamSocket
| 由 rm::async::Acceptor 建立的流式 Socket 异步会话 更多...
class | rm::async::Acceptor
| 异步流式 Socket 接受器 更多...
class | rm::async::Connector
| 异步流式 Socket 连接器 更多...

## 类型定义
using | rm::ResponseMiddleware = std::function<void(const Request &, Response &)>
| 响应中间件类型
using | rm::SocketFd = int

## 枚举
enum class | rm::HTTPMethod : uint8_t { rm::HTTPMethod::Get , rm::HTTPMethod::Post , rm::HTTPMethod::Put , rm::HTTPMethod::Delete , rm::HTTPMethod::Patch , rm::HTTPMethod::Head , rm::HTTPMethod::Options , rm::HTTPMethod::Trace , rm::HTTPMethod::Connect , rm::HTTPMethod::Unknown }
| HTTP 请求方法 更多...
enum class | rm::NetworkInterfaceType : uint8_t { rm::NetworkInterfaceType::Ethernet , rm::NetworkInterfaceType::Wireless , rm::NetworkInterfaceType::PPP , rm::NetworkInterfaceType::Tunnel , rm::NetworkInterfaceType::Loopback , rm::NetworkInterfaceType::Other , rm::NetworkInterfaceType::Unknown }
| 接口驱动类型 更多...

## 函数
URLParseInfo | rm::parseURL (std::string_view url)
| 解析 URL
std::tuple< std::string, bool > | rm::parseDNS (std::string_view hostname)
| 域名解析
ResponseMiddleware | rm::statics (std::string_view url, std::string_view root)
| 静态路由中间件，处理对指定 URL 路径的静态文件请求
ResponseMiddleware | rm::cors ()
| 跨域资源共享 CORS 中间件，为响应添加 CORS 头部信息
Response | rm::requests::request (HTTPMethod method, std::string_view url, const std::vector< std::string > &querys={}, const std::unordered_map< std::string, std::string > &heads={}, std::string_view body="")
| 发出同步 HTTP 请求
Response | rm::requests::get (std::string_view url, const std::vector< std::string > &querys={}, const std::unordered_map< std::string, std::string > &heads={})
| 发出同步 GET 请求
Response | rm::requests::post (std::string_view url, std::string_view body, const std::vector< std::string > &querys={}, const std::unordered_map< std::string, std::string > &heads={})
| 发出同步 POST 请求
Response | rm::requests::del (std::string_view url, const std::vector< std::string > &querys={}, const std::unordered_map< std::string, std::string > &heads={})
| 发出同步 DELETE 请求
Task< Response > | rm::async::requests::request (IOContext &io_context, HTTPMethod method, std::string_view url, const std::vector< std::string > &querys={}, const std::unordered_map< std::string, std::string > &heads={}, std::string_view body="")
| 发出异步 HTTP 请求
Task< Response > | rm::async::requests::get (IOContext &io_context, std::string_view url, const std::vector< std::string > &querys={}, const std::unordered_map< std::string, std::string > &heads={})
| 发出异步 GET 请求
Task< Response > | rm::async::requests::post (IOContext &io_context, std::string_view url, std::string_view body, const std::vector< std::string > &querys={}, const std::unordered_map< std::string, std::string > &heads={})
| 发出异步 POST 请求
Task< Response > | rm::async::requests::del (IOContext &io_context, std::string_view url, const std::vector< std::string > &querys={}, const std::unordered_map< std::string, std::string > &heads={})
| 发出异步 DELETE 请求

## 变量
constexpr SocketFd | rm::INVALID_SOCKET_FD = -1

## 详细描述

提供跨平台的同步异步 Socket 通信、HTTP 请求、HTTP Web 后端框架功能

## 类型定义说明

## ◆ ResponseMiddleware

using rm::ResponseMiddleware = std::function<void(const Request &, Response &)>

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

响应中间件类型

## ◆ SocketFd

using rm::SocketFd = int

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

## 枚举类型说明

## ◆ HTTPMethod

enum class rm::HTTPMethod : uint8_t
| strong

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

HTTP 请求方法

枚举值
Get Python: rm.HTTPMethod.Get | 从服务器获取资源，用于请求数据而不对数据进行更改
Post Python: rm.HTTPMethod.Post | 向服务器发送数据，用于提交表单数据或上传文件
Put Python: rm.HTTPMethod.Put | 向服务器发送数据，一般用于更新现有资源
Delete Python: rm.HTTPMethod.Delete | 从服务器删除指定的资源，请求中包含要删除的资源标识符
Patch Python: rm.HTTPMethod.Patch | 对资源进行部分修改，与 Put 类似，但 Patch 只更改部分数据而不是替换整个资源
Head Python: rm.HTTPMethod.Head | 类似于 Get，但服务器只返回响应的头部，不返回实际数据，常用于检查资源的元数据
Options Python: rm.HTTPMethod.Options | 返回服务器支持的 HTTP 方法
Trace Python: rm.HTTPMethod.Trace | 回显服务器收到的请求，主要用于诊断
Connect Python: rm.HTTPMethod.Connect | 建立一个到服务器的隧道，通常用于 HTTPS 连接
Unknown Python: rm.HTTPMethod.Unknown | 未知方法

## ◆ NetworkInterfaceType

enum class rm::NetworkInterfaceType : uint8_t
| strong

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

接口驱动类型

枚举值
Ethernet | 以太网
Wireless | 无线接口
PPP | 点对点协议
Tunnel | 隧道接口
Loopback | lo 回环设备
Other | 其他
Unknown | 未知类型

## 函数说明

## ◆ cors()

ResponseMiddleware rm::cors | ( |  | ) |

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

跨域资源共享 CORS 中间件，为响应添加 CORS 头部信息

// 在 Web 应用程序框架中使用
auto app = async::Webapp(io_context);
app.use(cors());
rm::async::Webapp
Web 应用程序框架
定义 netapp.hpp:528
rm::cors
ResponseMiddleware cors()
跨域资源共享 CORS 中间件，为响应添加 CORS 头部信息

## ◆ del() [1/2]

Task< Response > rm::async::requests::del | ( | IOContext & | io_context,
|  | std::string_view | url,
|  | const std::vector< std::string > & | querys = {},
|  | const std::unordered_map< std::string, std::string > & | heads = {} )
| inline

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

发出异步 DELETE 请求

参数

  [in] | io_context | 异步 I/O 执行上下文
  [in] | url | 请求的 URL
  [in] | querys | 可选的 URL 参数列表
  [in] | heads | 可选的请求头列表

返回
  rm::async::Task<Response>

## ◆ del() [2/2]

Response rm::requests::del | ( | std::string_view | url,
|  | const std::vector< std::string > & | querys = {},
|  | const std::unordered_map< std::string, std::string > & | heads = {} )
| inline

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

发出同步 DELETE 请求

参数

  [in] | url | 请求的 URL
  [in] | querys | 可选的 URL 参数列表
  [in] | heads | 可选的请求头列表

返回
  Response 响应报文

## ◆ get() [1/2]

Task< Response > rm::async::requests::get | ( | IOContext & | io_context,
|  | std::string_view | url,
|  | const std::vector< std::string > & | querys = {},
|  | const std::unordered_map< std::string, std::string > & | heads = {} )
| inline

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

发出异步 GET 请求

参数

  [in] | io_context | 异步 I/O 执行上下文
  [in] | url | 请求的 URL
  [in] | querys | 可选的 URL 参数列表
  [in] | heads | 可选的请求头列表

返回
  rm::async::Task<Response>

## ◆ get() [2/2]

Response rm::requests::get | ( | std::string_view | url,
|  | const std::vector< std::string > & | querys = {},
|  | const std::unordered_map< std::string, std::string > & | heads = {} )
| inline

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

发出同步 GET 请求

参数

  [in] | url | 请求的 URL
  [in] | querys | 可选的 URL 参数列表
  [in] | heads | 可选的请求头列表

返回
  Response 响应报文

## ◆ parseDNS()

std::tuple< std::string, bool > rm::parseDNS | ( | std::string_view | hostname | ) |

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

域名解析

参数

  [in] | hostname | 域名

返回值

  ip | IP 地址
  isv6 | 是否为 IPv6 地址

## ◆ parseURL()

URLParseInfo rm::parseURL | ( | std::string_view | url | ) |

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

解析 URL

参数

  [in] | url | 统一资源定位符，例如 http://example.com:8080/path

返回值

  scheme | 协议部分，例如 http 或 https
  hostname | 域名部分，例如 example.com
  port | 端口号，默认为 80 (HTTP) 或 443 (HTTPS)
  path | 路径部分，例如 /path/to/resource
  querys | 以 std::vector 存储的查询参数部分，例如 [key=value, key2=value2]

## ◆ post() [1/2]

Task< Response > rm::async::requests::post | ( | IOContext & | io_context,
|  | std::string_view | url,
|  | std::string_view | body,
|  | const std::vector< std::string > & | querys = {},
|  | const std::unordered_map< std::string, std::string > & | heads = {} )
| inline

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

发出异步 POST 请求

参数

  [in] | io_context | 异步 I/O 执行上下文
  [in] | url | 请求的 URL
  [in] | body | 请求体
  [in] | querys | 可选的 URL 参数列表
  [in] | heads | 可选的请求头列表

返回
  rm::async::Task<Response>

## ◆ post() [2/2]

Response rm::requests::post | ( | std::string_view | url,
|  | std::string_view | body,
|  | const std::vector< std::string > & | querys = {},
|  | const std::unordered_map< std::string, std::string > & | heads = {} )
| inline

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

发出同步 POST 请求

参数

  [in] | url | 请求的 URL
  [in] | body | 请求体
  [in] | querys | 可选的 URL 参数列表
  [in] | heads | 可选的请求头列表

返回
  Response 响应报文

## ◆ request() [1/2]

Task< Response > rm::async::requests::request | ( | IOContext & | io_context,
|  | HTTPMethod | method,
|  | std::string_view | url,
|  | const std::vector< std::string > & | querys = {},
|  | const std::unordered_map< std::string, std::string > & | heads = {},
|  | std::string_view | body = "" )

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

发出异步 HTTP 请求

参数

  [in] | io_context | 异步 I/O 执行上下文
  [in] | method | 请求方法
  [in] | url | 请求的 URL
  [in] | querys | 可选的 URL 参数列表
  [in] | heads | 可选的请求头列表
  [in] | body | 可选的请求体

返回
  响应报文的异步任务

## ◆ request() [2/2]

Response rm::requests::request | ( | HTTPMethod | method,
|  | std::string_view | url,
|  | const std::vector< std::string > & | querys = {},
|  | const std::unordered_map< std::string, std::string > & | heads = {},
|  | std::string_view | body = "" )

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

发出同步 HTTP 请求

参数

  [in] | method | 请求方法
  [in] | url | 请求的 URL
  [in] | querys | 可选的 URL 查询参数列表
  [in] | heads | 可选的请求头列表
  [in] | body | 可选的请求体

返回
  响应报文

## ◆ statics()

ResponseMiddleware rm::statics | ( | std::string_view | url,
|  | std::string_view | root )

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

静态路由中间件，处理对指定 URL 路径的静态文件请求

参数

  [in] | url | URL 路径前缀，例如 /static
  [in] | root | 静态文件根目录，例如 ./public

// 在 Web 应用程序框架中使用
auto app = async::Webapp(io_context);
app.use(statics("/static", "./public"));
rm::statics
ResponseMiddleware statics(std::string_view url, std::string_view root)
静态路由中间件，处理对指定 URL 路径的静态文件请求

注解
  静态路由仅在未处理请求时有效，若有对应的路由表达成匹配，则静态路由中间件不会被调用

## 变量说明

## ◆ INVALID_SOCKET_FD

SocketFd rm::INVALID_SOCKET_FD = -1
| constexpr

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