我在C中有一个小的Web服务器,当它必须提供html或css文件时工作正常。但是当谈到非文本文件(图像,压缩文件等)时,客户端收到的数据会被破坏,无法显示。
来自服务器的响应如下:
HTTP/1.1 200 OK
Date: Wed, 11 Jun 2014 11:24:27 GMT
Server: MacFly/0.1.1
Cache-Control: max-age=60
Expires: Wed, 11 Jun 2014 11:25:27 GMT
Last-Modified: Wed, 11 Jun 2014 06:13:38 GMT
ETag: "1041463782"
Content-Length: 36851
Content-Type: image/jpeg
���
最后一行对应于损坏的数据。
为了生成数据,我使用以下函数读取所需文件(任何格式:html,css,jpg等)并将其保存在file_contents
中:
void get_content(const char * filename, char * file_contents) {
FILE * file;
int file_size;
file_size = get_file_size(filename);
if (file = fopen(filename, "rb")) {
fread(file_contents, sizeof(char), file_size-1, file);
fclose(file);
}
}