Maz*_*999 1 c sockets http http-headers
我用C做了一个socket。这个程序是通过命令行操作的,在Linux上编译的。它执行以下操作:
我的问题是:
如何在fwrite()函数记录文件之前去掉这个HEADER。就像字节到字节的代码一样,要找到双行“\n\n”。
HTTP 标头始终以\r\n\r\n. 因此,您只想找到第一个匹配的字符串,并将位置增加 4 个字节。
该strstr()函数(在 中找到string.h)就是这样做的:
char * strstr(const char *str1, const char *str2);
Run Code Online (Sandbox Code Playgroud)
str2您要在 中搜索的字符串在哪里str1。
它将内存位置返回到第一个匹配项的开头。如果未找到该字符串,则返回NULL。
因此,如果您假设缓冲区大于标头:
char *buf = getHTTPResponse(url); // Get HTTP response from URL
char *content = strstr(buf, "\r\n\r\n");
if (content != NULL) {
content += 4; // Offset by 4 bytes to start of content
}
else {
content = buf; // Didn't find end of header, write out everything
}
// Write out content to file
Run Code Online (Sandbox Code Playgroud)
有关使用 C 语言的完整 HTTP 客户端示例,请参阅此处strstr()。
| 归档时间: |
|
| 查看次数: |
3585 次 |
| 最近记录: |