如何从使用 c++ 中的 recv 接收的数据中删除 header?

How to Strip the header from data received using recv in c++?

我在下面制作了这段代码来下载大文件并将其保存到文件中。 (我删除了不重要的部分)

int nDataLength;
int i = 0;
static char buffer[4096];
while ((nDataLength = recv(Socket, buffer, sizeof(buffer), NULL)) > 0)
{
    //MessageBoxA(0, std::to_string(nDataLength).c_str(), "TEST", 0);
    fwrite(buffer, nDataLength, 1, pFile);
}

现在它保存文件,但它也保存 HTTP header。现在我真的不知道如何从收到的数据中删除 header。
如果它足够小,我可以从缓冲区读取 Content-Length,然后再次打开文件并删除 header,但这不是选项,因为缓冲区将被新数据覆盖。

我也不能使用其他库,如 libcurl 等

编辑:

char* content = strstr(buffer, "\r\n\r\n");
    if (content != NULL) {
        content += 4;
        fwrite(content, nDataLength, 1, pFile);
    }
    else
    {
        fwrite(buffer, nDataLength, 1, pFile);
    }

好的,我想到了在保存之前去除 header 的函数。

 int nDataLength;
int i = 0;
static char buffer[4096];
while ((nDataLength = recv(Socket, buffer, sizeof(buffer), NULL)) > 0)
{
    char* content = strstr(buffer, "\r\n\r\n");
    if (content != NULL) {
        std::string s2(buffer); 
        size_t p = s2.find("\r\n\r\n");
        fwrite(buffer+p+4, nDataLength-p-4, 1, pFile);
    }
    else
    {
        fwrite(buffer, nDataLength, 1, pFile);
    }
    
}