http下载 asio改
作者:互联网
#include <io.h> using namespace std; void getDirFiles(string dir, vector<string>& files) { //文件句柄 long hFile = 0; //文件信息 struct _finddata_t fileinfo; string p; if ((hFile = _findfirst(p.assign(dir).append("/*").c_str(), &fileinfo)) != -1) { do { //如果是目录,迭代之 //如果不是,加入列表 if ((fileinfo.attrib & _A_SUBDIR)) { //if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0) // getFiles(p.assign(path).append("/").append(fileinfo.name), files); } else { files.push_back(p.assign(dir).append("/").append(fileinfo.name)); } } while (_findnext(hFile, &fileinfo) == 0); _findclose(hFile); } } reply reply::dirlist_reply() { vector<string> vecFiles; getDirFiles("./", vecFiles); string strA; for (auto item:vecFiles) { strA.append(item); strA.append(" "); } reply rep; rep.status = ok; rep.content = strA; rep.headers.resize(2); rep.headers[0].name = "Content-Length"; rep.headers[0].value = std::to_string(rep.content.size()); rep.headers[1].name = "Content-Type"; rep.headers[1].value = "text/html"; return rep; } } // namespace server } // namespace http
使用asio 时预处理器
ASIO_STANDALONE
_CRT_SECURE_NO_WARNINGS
_WINSOCK_DEPRECATED_NO_WARNINGS
目录
F:\Cpan\vs2019repos\TestAsio\asio-1.12.2\include
直接源码拷贝进去,不需要其他操作。
剩下就是大文件的分批发送了--
还有那个断点传的还需要。
标签:asio,http,name,rep,headers,下载,fileinfo,append,hFile 来源: https://www.cnblogs.com/cnchengv/p/16292927.html