RMVL  2.5.0-dev
Robotic Manipulation and Vision Library
载入中...
搜索中...
未找到

提供跨平台的同步异步 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 应用程序框架 更多...
class  rm::async::HttpServer
 HTTP 服务器 更多...
class  rm::async::HttpsServer
 HTTPS 服务器 更多...
struct  rm::NetworkInterfaceFlag
 接口功能与状态标志 更多...
class  rm::NetworkInterface
 网络接口 更多...
class  rm::Endpoint
 端点 更多...
struct  rm::RecvData
 Socket 读取结果结构体 更多...
struct  rm::RecvtoData
 Socket 读取结果结构体 更多...
struct  rm::MultiRecvData
 Socket 多缓冲区读取结果结构体 更多...
class  rm::DgramSocket
 rm::Listenerrm::Sender 建立的数据报式 Socket 会话 更多...
class  rm::Sender
 同步数据报式 Socket 发送器 更多...
class  rm::Listener
 同步数据报式 Socket 监听器 更多...
class  rm::StreamSocket
 rm::Acceptorrm::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 连接器 更多...
class  rm::SSLContext
 TLS 上下文 更多...
class  rm::SSLStream
 TLS 安全流 更多...
class  rm::async::SSLStream
 异步 TLS 安全流 更多...

类型定义

using rm::ResponseMiddleware = std::function<void(const Request &, Response &)>
 响应中间件类型
using rm::SocketFd = int
using rm::SSLContextRef = std::reference_wrapper<SSLContext>
 SSL 上下文左值引用包装器

枚举

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
}
 接口驱动类型 更多...
enum class  rm::SSLMode { rm::SSLMode::Client , rm::SSLMode::Server }
 TLS 工作模式 更多...
enum class  rm::SSLVerifyMode { rm::SSLVerifyMode::None , rm::SSLVerifyMode::Peer }
 TLS 证书验证方式 更多...

函数

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 请求
Response rm::requests::options (std::string_view url, const std::vector< std::string > &querys={}, const std::unordered_map< std::string, std::string > &heads={})
 发出同步 OPTIONS 请求
Task< Responserm::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< Responserm::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< Responserm::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< Responserm::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>

◆ SSLContextRef

using rm::SSLContextRef = std::reference_wrapper<SSLContext>

#include <rmvl/io/ssl.hpp>

SSL 上下文左值引用包装器

枚举类型说明

◆ 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 

未知类型

◆ SSLMode

enum class rm::SSLMode
strong

#include <rmvl/io/ssl.hpp>

TLS 工作模式

注解
TLS/SSL 位于 TCP 之上、HTTP/WebSocket 等应用层协议之下。客户端与服务端在 TCP 连接建立后完成 TLS 握手,握手成功后再通过加密流传输应用层数据。
枚举值
Client 
Python: rm.SSLMode.Client

客户端模式

Server 
Python: rm.SSLMode.Server

服务端模式

◆ SSLVerifyMode

enum class rm::SSLVerifyMode
strong

#include <rmvl/io/ssl.hpp>

TLS 证书验证方式

枚举值
None 
Python: rm.SSLVerifyMode.None

不验证对端证书

Peer 
Python: rm.SSLVerifyMode.Peer

验证对端证书链

函数说明

◆ cors()

ResponseMiddleware rm::cors ( )

#include <rmvl/io/netapp.hpp>

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

// 在 Web 应用程序框架中使用
auto app = async::Webapp(io_context);
app.use(cors());
Web 应用程序框架
定义 netapp.hpp:589
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 响应报文

◆ options()

Response rm::requests::options ( 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>

发出同步 OPTIONS 请求

参数
[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域名
返回值
ipIP 地址
isv6是否为 IPv6 地址

◆ parseURL()

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

#include <rmvl/io/netapp.hpp>

解析 URL

参数
[in]url统一资源定位符,例如 http://example.com:8080/path
返回值
scheme协议部分,例如 httphttps
hostname域名部分,例如 example.com
port端口号,默认为 80 (HTTP) 或 443 (HTTPS)
path路径部分,例如 /path/to/resource
querysstd::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]urlURL 路径前缀,例如 /static
[in]root静态文件根目录,例如 ./public
// 在 Web 应用程序框架中使用
auto app = async::Webapp(io_context);
app.use(statics("/static", "./public"));
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>