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

直接源码拷贝进去,不需要其他操作。

 

剩下就是大文件的分批发送了--

 还有那个断点传的还需要。

 

#define RCV_CMD_STATUE   0
#define RCV_DATA_STATUE  1

int    statue = RCV_CMD_STATUE;

string rcvBuffer;



void parse(BYTE* buf,int length, tcp::socket sock) {

    if (RCV_CMD_STATUE == statue) {
        BYTE b0 = buf[0];
        if (COMMAND_MSG_LIST == b0) {
            //asio::write(sock, asio::buffer("a", length));
        }  else if (COMMAND_MSG_GET == b0) {
            //asio::write(sock, asio::buffer("a", length));
        }
        else if (COMMAND_MSG_PUT == b0) {
            //asio::write(sock, asio::buffer("a", length));
        }

    }
}

 

#pragma once
#define     COMMAND_MSG_LIST     0X81
#define     COMMAND_MSG_GET      0X82
#define     COMMAND_MSG_PUT      0X83
#define     COMMAND_MSG_DATA     0X91

struct msgHead {
    int command;
    int length;
};

 

posted @ 2022-05-20 16:53  cnchengv  阅读(26)  评论(0编辑  收藏  举报