继续完成之前的web服务器。
这里主要实现了简单的web服务器的GET请求,返回相应的文件。
主要是在上次的基础上修改以及参考别人的写法,当然中间也遇到了很多的问题。
其实这个程序和上一个程序的不同就是把固定的访问文件参数化了,其实思路非常简单,就是利用字符串作为文件名打开文件。
由于之前实现的时候在获取文件大小时,调用了fseek函数,因此文件指针就指向文件尾,但是我意识上还是以为它仍然指向文件头,导致调了好久的错误(菜啊: ()。
实现的代码为:
#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"Get_html.h"
using namespace std;
bool is_get_http(char* buff){
//判断是否为GET请求
return !strncmp(buff,"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