RMVL  2.4.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 应用程序框架 更多...
struct  rm::NetworkInterfaceFlag
 接口功能与状态标志 更多...
class  rm::NetworkInterface
 网络接口 更多...
class  rm::Endpoint
 端点 更多...
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 连接器 更多...

类型定义

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< 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>

枚举类型说明

◆ 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());
Web 应用程序框架
定义 netapp.hpp:482
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域名
返回值
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>