继续改进上次的服务器,但是仍然只能实现简单的GET请求。
对比于前一个版本,这个版本加入了访问更多类型的文件。并且加入了更高级的文件存储机制,将文件映射到内存中,来解决一些不便。
实现代码:
#include<cstdio>
#include<stdio.h>
#include<cstring>
#include<cstdlib>
#include<unistd.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<sys/stat.h>
#include<sys/mman.h>
#include<fcntl.h>
#include"Get_html.h"
using namespace std;
bool is_get_http(char* request){
//判断是否为GET请求
return !strncmp(request,"GET",3);
}
char* get_file_name(char* buff){
//从请求中得到文件名
char* fp=buff+4;
char* Space=strchr(fp,' ');
*Space='\0';
return fp;
}
int get_file_size(char* file_name){
//得到文件大小
FILE *fp=fopen(file_name,"r");
if(!fp)
return -1;
fseek(fp,0,SEEK_END);
int size=ftell(fp);
fclose(fp);
return size;
}
char* get_file_type(char* file_path){
//返回