Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
recv()函数中HTTP头的处理不一致_C_Apache_Http - Fatal编程技术网

recv()函数中HTTP头的处理不一致

recv()函数中HTTP头的处理不一致,c,apache,http,C,Apache,Http,我想使用下面的代码从消息中获取HTTP接收头,但有时工作正常,有时不正常 这是我要发送的代码: send(s, message, strlen(message), 0) 这就是我接收数据的方式: int memory = 1; int d = 0; header = malloc(memory * sizeof(char)); if (header == NULL) { printf("Error, memory\n"); return 1; } while (recv(s,

我想使用下面的代码从消息中获取HTTP接收头,但有时工作正常,有时不正常

这是我要发送的代码:

send(s, message, strlen(message), 0)
这就是我接收数据的方式:

int memory = 1;
int d = 0;
header = malloc(memory * sizeof(char));
if (header == NULL) {
    printf("Error, memory\n");
    return 1;
}
while (recv(s, header + d, 1,0)>0) {
    if(strstr(header, "\r\n\r\n") != NULL)
        break;

    d++;
    if (d >= memory) {
        memory *= 2;
        header = realloc(header, memory);
        if (header == NULL) {
            printf("Error, memory\n");
            return 1;
        }
    }
}
我觉得malloc有点问题,但我找不到地方

这是一个成功的接收头,根据:

这是一条失败的消息,根据:


如何让函数正确且一致地解码标题?

strstr函数仅适用于C样式字符串。您不能将其用于任意数据。一种可能是使用
memmem
类型函数,如


我强烈建议您停止发送HTTP 1.1请求,改为发送HTTP 1.0请求。要创建一个HTTP 1.1客户端(例如处理分块编码),您可能不想处理很多事情。

strstrstr
函数仅适用于C样式的字符串。您不能将其用于任意数据。一种可能是使用
memmem
类型函数,如


我强烈建议您停止发送HTTP 1.1请求,改为发送HTTP 1.0请求。要使HTTP 1.1客户端(例如处理分块编码)正常运行,您可能不想处理的事情很多。

无法工作,因为无法正确、完整地处理recv()返回的结果,在字符数组上误用strxxx()调用,不能保证以null结尾,无法理解底层TCP协议的八位字节流性质,该协议只能传输一个字节或更少的消息,并且滥用malloc-仅为标头缓冲区分配一个字节。

无法工作,因为无法正确、完整地处理recv()返回的结果,误用strxxx()对不保证以null结尾的字符数组的调用,无法理解只能传输一个字节或更少的消息的底层TCP协议的八位字节流性质,滥用malloc-仅为标头缓冲区分配一个字节。

仍然不起作用,我将它改为memmen,并将HTTP请求改为1.0。但我还是得到了部分头球<代码>标题:HTTP/1.1 200确定日期:Sat,2016年4月2日03:00:33 GMT内容类型:image/png连接:close-Set Cookie:uuu cfduid=d88ceea80daa7c7da249e58e3e
仍不工作,我将其更改为memmen,并将HTTP请求更改为1.0。但我还是得到了部分头球<代码>标题:HTTP/1.1 200确定日期:Sat,2016年4月2日03:00:33 GMT内容类型:图像/png连接:关闭集Cookie:\uu cfduid=d88ceea80daa7c7da249e58e3e
Header:
HTTP/1.1 200 OK
Date: Sat, 02 Apr 2016 02:35:07 GMT
Last-Modified: Tue, 24 Feb 2015 20:49:22 GMT
ETag: "7ab4-50fdba7431880;50c0cc9312bdc"
Accept-Ranges: bytes
Content-Length: 31412
Cache-Control: max-age=2592000
Expires: Mon, 02 May 2016 02:35:07 GMT
P3P: policyref="http://www.w3.org/2014/08/p3p.xml"
Vary: upgrade-insecure-requests
Access-Control-Allow-Origin: *
Connection: close
Content-Type: image/png; qs=0.7
Header:
HTTP/1.1 200 OK
gEp7qN_agFirScA9OVXmWLV8ofyAZngl0Q_Sc-K50=h500.png HTTP/1.1
Host: apk-dl.com
Connection: close