您的位置:首页 > 房产 > 家装 > [项目][WebServer][Util类]详细讲解

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

2025/1/15 18:59:29 来源:https://blog.csdn.net/qq_37281656/article/details/142170882  浏览:    关键词:[项目][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";}}
};

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com