STTNet
 全部  命名空间 文件 函数 变量 类型定义 枚举 枚举值 宏定义 
Public 成员函数 | 所有成员列表
stt::network::HttpServerFDHandler类 参考

解析,响应Http/https请求的操作类 仅传入套接字,然后使用这个类进行Http的操作 更多...

#include <sttnet.h>

类 stt::network::HttpServerFDHandler 继承关系图:
stt::network::TcpFDHandler

Public 成员函数

void setFD (const int &fd, SSL *ssl=nullptr, const bool &flag1=false, const bool &flag2=true)
 初始化对象,传入套接字等参数 更多...
 
int solveRequest (TcpFDInf &TcpInf, HttpRequestInformation &HttpInf, const unsigned long &buffer_size, const int &times=1)
 解析Http/Https请求 更多...
 
bool sendBack (const std::string &data, const std::string &header="", const std::string &code="200 OK", const std::string &header1="")
 发送Http/Https响应 更多...
 
bool sendBack (const char *data, const size_t &length, const char *header="\0", const char *code="200 OK\0", const char *header1="\0", const size_t &header_length=50)
 发送Http/Https响应 更多...
 
- Public 成员函数 继承自 stt::network::TcpFDHandler
void setFD (const int &fd, SSL *ssl, const bool &flag1=false, const bool &flag2=false, const int &sec=-1)
 传入套接字初始化对象 更多...
 
int getFD ()
 获取该对象的套接字 更多...
 
SSL * getSSL ()
 获取该对象的加密SSL句柄 更多...
 
void close (const bool &cle=true)
 关闭对象 更多...
 
void blockSet (const int &sec=-1)
 设置对象中的套接字为阻塞模式 更多...
 
void unblockSet ()
 设置对象中的套接字为非阻塞模式 更多...
 
bool multiUseSet ()
 设置对象中的套接字为SO_REUSEADDR模式 更多...
 
bool isConnect ()
 判断对象是否有套接字绑定 更多...
 
int sendData (const std::string &data, const bool &block=true)
 向已连接的套接字发送字符串数据。 更多...
 
int sendData (const char *data, const uint64_t &length, const bool &block=true)
 向已连接的套接字发送指定长度的二进制数据。 更多...
 
int recvDataByLength (std::string &data, const uint64_t &length, const int &sec=2)
 从已连接的套接字中阻塞接收指定长度的数据到字符串 更多...
 
int recvDataByLength (char *data, const uint64_t &length, const int &sec=2)
 从已连接的套接字中阻塞接收指定长度的数据到char*容器 更多...
 
int recvData (std::string &data, const uint64_t &length)
 从已连接的套接字中接收一次数据到string字符串容器 更多...
 
int recvData (char *data, const uint64_t &length)
 从已连接的套接字中接收一次数据到char*容器 更多...
 

额外继承的成员函数

- Public 属性 继承自 stt::network::TcpFDHandler
bool flag3 =false
 如果sendData的block=true,如果发送过程中连接断开,这个标志位会置为true 更多...
 
- Protected 属性 继承自 stt::network::TcpFDHandler
int fd =-1
 
bool flag1 =false
 
bool flag2 =false
 
SSL * ssl =nullptr
 
int sec =-1
 

详细描述

解析,响应Http/https请求的操作类 仅传入套接字,然后使用这个类进行Http的操作

成员函数说明

bool stt::network::HttpServerFDHandler::sendBack ( const std::string &  data,
const std::string &  header = "",
const std::string &  code = "200 OK",
const std::string &  header1 = "" 
)

发送Http/Https响应

参数
data装着响应体的数据的string容器
codeHttp响应状态码和状态说明 (默认是 200 OK)
headerHttp请求头;如果不是用createHeader生成,记得在末尾要加上
header1HTTP请求头的附加项;如果需要,一定要填入一个有效项;末尾不需要加入
(不能用createHeader)。(比如可以默认填入keepalive项)
返回
true:发送响应成功 false:发送响应失败
bool stt::network::HttpServerFDHandler::sendBack ( const char *  data,
const size_t &  length,
const char *  header = "\0",
const char *  code = "200 OK\0",
const char *  header1 = "\0",
const size_t &  header_length = 50 
)

发送Http/Https响应

参数
data装着响应体的数据的char *容器
lengthchar*容器中的数据长度
codeHttp响应状态码和状态说明 (默认是 200 OK)
headerHttp请求头;如果不是用createHeader生成,记得在末尾要加上
header1HTTP请求头的附加项;如果需要,一定要填入一个有效项;末尾不需要加入
(不能用createHeader)。(比如可以默认填入keepalive项)
header_length响应头部加起来的最大长度(默认为50)
警告
预留的空间务必准确 否则可能发送失败
所有char*指向的数据都必须确保\0结尾 \0不计入长度 否则有崩溃风险
返回
true:发送响应成功 false:发送响应失败
void stt::network::HttpServerFDHandler::setFD ( const int &  fd,
SSL *  ssl = nullptr,
const bool &  flag1 = false,
const bool &  flag2 = true 
)
inline

初始化对象,传入套接字等参数

参数
fd套接字
sslTLS加密的SSL句柄(默认为nullptr)
flag1true:启用非阻塞模式 false:启用阻塞模式 (默认为false,即启用阻塞模式)
flag2true:启用SO_REUSEADDR模式 false:不启用SO_REUSEADDR模式 (默认为true,即启用SO_REUSEADDR模式)
int stt::network::HttpServerFDHandler::solveRequest ( TcpFDInf TcpInf,
HttpRequestInformation HttpInf,
const unsigned long &  buffer_size,
const int &  times = 1 
)

解析Http/Https请求

参数
TcpInf存放底层tcp处理套接字的信息
HttpInf存放Http协议的信息
buffer_size服务器定义的解析缓冲区的大小(单位为字节)
times记录解析的次数,某些场景会用上
返回
-1:解析失败 0:还需要继续解析 1:解析完成
注解
TcpInf.status

0 初始状态 1 接收请求头中 2 接收请求体中(chunk模式) 3 接收请求体中(非chunk模式)


该类的文档由以下文件生成: