如何使用"连接:关闭"在HTTP请求或单独的标题和正文? C

时间:2017-11-12 18:46:19

标签: c sockets http get request

我想通过C中的套接字下载图像。在我的代码中,我有一个函数返回正文内容的内容长度。如何在" \ r \ n \ r \ n"之后收到大量的content_length数据?在循环中并将其保存到文件?我已经听过"连接:关闭"我怎么用呢?

// Generate HTTP request
sprintf(send_buf, "%s %s %s%s %s%s", "GET", path, "HTTP/1.1\r\n", 
                                "HOST:", hostname, "\r\n\r\n");

send_len = strlen(send_buf); //length of request to send
bytes_send = send(sockfd, send_buf, send_len, 0);

if (bytes_send <= 0)
{
    perror("nothing sended\n");
    exit(1);
}

printf("Bytes send: %d\n\n", bytes_send);

// receive data


FILE *fd = fopen("img.txt", "wb");

bytes_recv = recv(sockfd, recv_buf, sizeof(recv_buf), 0);

/*char *img = strstr(recv_buf, "\r\n\r\n");
img += 4;*/

int content_length = content(recv_buf);

//how can I recv() data with length content_length in a loop after "\r\n\r\n"?

fwrite(recv_buf, 1, bytes_recv, fd);

写完之后,如果我从img.txt中删除标题并将文件更改为img.jpg,则图像似乎已损坏,因为并未收到所有正文内容。

0 个答案:

没有答案