Gee*_*_SO 6 networking network-programming http web
我是一名学生正在进行网络服务器练习,我需要一些帮助.
我的网络服务器可以正常用于文本页面,但只要浏览器发送---GET /img.jpg HTTP/1.1请求,我就不知道如何处理它.我听说HTTP协议是基于文本的,那么如何在HTTP响应中发送图像?
这是我创建正常HTTP响应的一个段,我打算用它readresult == 2来表示图像.
if(readresult == 1){
sprintf(toreturn, "%s\r\n%s\r\n%s\r\n\r\n%s", "HTTP/1.1 200 OK", "Content-Type: text/html", "Connection: close", readpagestring);
returnflag = 1;
}
else if(readresult == 2){
returnflag = 2;
}
else{
sprintf(toreturn, "%s\r\n%s\r\n%s\r\n\r\n%s", "HTTP/1.1 404 Not Found", "Content-Type: text/html", "Connection: close", readpagestring);
returnflag = 0;
}
Run Code Online (Sandbox Code Playgroud)
它所调用的功能
int readpage(char *readaddress, char *pagereturn){
FILE *inputfile = (FILE *)calloc(1,sizeof(FILE));
int flag;
int c;
int n = 0;
readaddress++;
inputfile=fopen(readaddress,"r");
if (inputfile==NULL){
FILE *missingfile;
missingfile=fopen("404.html","r");
while ((c = fgetc (missingfile)) != EOF){
*(pagereturn+n) = c;
n++;
}
flag = 0;
fclose (missingfile);
}
else{
while ((c = fgetc (inputfile)) != EOF){
*(pagereturn+n) = c;
n++;
}
flag = 1;
fclose (inputfile);
}
return flag;
}
Run Code Online (Sandbox Code Playgroud)
Dav*_*rra 13
您必须返回HTTP response如下:(非常小,您可以添加所需的所有标题)
HTTP/1.1 200 OK\r\n
Content-Type: image/gif\r\n
Content-Length: [length in bytes of the image]\r\n
\r\n
[binary data of your image]
Run Code Online (Sandbox Code Playgroud)
显然,您还必须根据图像类型设置内容类型.
您可以使用a构建标题sprintf,然后memcpy在最后一个之后构建图像的二进制数据\r\n
确保toreturn缓冲区足够大.
| 归档时间: |
|
| 查看次数: |
15606 次 |
| 最近记录: |