当前位置: 首页 > news >正文

[项目][WebServer][Util类]详细讲解

  • 本篇主要实现Util类,里面有多个其他类会用到的共同方法
  • 废话不多说,直接上代码~
struct Util
{// 不同平台对空格的处理是不一样的,要统一处理static int ReadLine(int sock, std::string &out){char ch = 'K';while(ch != '\n'){ssize_t s = recv(sock, &ch, 1, 0);if(s > 0){// Successif(ch == '\r'){// (\r\n or \r) --> \nrecv(sock, &ch, 1, MSG_PEEK); // 窥探,看缓冲区最前面的n个字符而不从缓冲区里拿出来if(ch == '\n'){recv(sock, &ch, 1, 0);}else{ch = '\n';}}// 1.Normal// 2.\nout.push_back(ch);}else if(s == 0){// Donereturn 0;}else{// Errorreturn -1;}}return out.size();}static bool CutString(const std::string& str, std::string& sub1, std::string& sub2, std::string sep){size_t pos = str.find(sep);if(pos != std::string::npos){sub1 = str.substr(0, pos);sub2 = str.substr(pos + sep.size());return true;}return false;}static std::string Code2Desc(int code){std::string desc = "";switch (code){case 200:desc = "OK";break;case 404:desc = "NOT_FOUND";break;case 400:desc = "BAD_REQUEST";break;case 500:desc = "SERVER_ERROR";break;default:break;}return desc;}// 后面可以考虑写进配置文件,然后load进来// 暂且方案先写成硬编码进源码里static std::string Suffix2Desc(const std::string& suffix){static std::unordered_map<std::string, std::string> suffix2desc = {{".html", "text/html"},{".css", "text/css"},{".js", "application/javascript"},{".jpg", "application/x-jpg"},{".xml", "application/xml"}};auto iter = suffix2desc.find(suffix);if(iter != suffix2desc.end()){return iter->second;}else{return "text/html";}}
};

http://www.mrgr.cn/news/25668.html

相关文章:

  • 腾讯云、阿里云、华为云优惠券领取、查看、使用教程分享
  • PCL 读取STL文件转换为点云
  • odoo14 | 报错:Database backup error: Access Denied
  • MySQL 存储过程:强大的数据库功能利器
  • C++缺省参数
  • 数学基础 -- 线性代数之特征值与特征向量深入解析
  • 十,Spring Boot 的内容协商的详细剖析(附+Debug调试说明)
  • 数据库锁有哪些?什么是死锁?
  • brew install node提示:Error: No such keg: /usr/local/Cellar/node
  • Linux 驱动编写框架 并编译导入开发板
  • Leetcode 第 138 场双周赛题解
  • 分类预测|基于改进的灰狼IGWO优化支持向量机SVM的数据分类预测matlab程序 改进策略:Cat混沌与高斯变异
  • 阿里达摩院:FunASR - onnxruntime 部署
  • 单链表的建立
  • Httplib库源码粗度
  • 三折手机可能面临的问题
  • 如何在 Vue 3 中使用 Element Plus
  • 开源免费的工贸一体行业ERP管理系统
  • 【学习笔记】手写 Tomcat 三
  • android 14.0 USB连接模式默认设为MTP