我想通过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,则图像似乎已损坏,因为并未收到所有正文内容。