SamstagBaron 的学生作业:
#include"server.h"
#include
#include
#include
#include
#include
const char *months[] = {
"Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
};
const char *weekdays[] = {
"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
};
#define STD_HEADER "Connection: close\r\n" \
"Server: MJPG-Streamer/0.2\r\n" \
"Cache-Control: no-store, no-cache, must-revalidate, pre-check=0, post-check=0, max-age=0\r\n" \
"Pragma: no-cache\r\n" \
"Expires: %s, %d %s %d %d:%d:%d GMT\r\rn"
const char arr[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ._-1234567890";
const char* mimetypes[] = {
".html","text/html",
".htm","text/html",
".css","text/css",
".js","text/javascript",
".txt","text/plain",
".jpg","image/jpeg",
".jpeg","image/jpeg",
".png","image/png",
".gif","image/gif",
".ico","image/x-icon",
".swf","application/x-shockwave-flash",
".cab","application/x-shockwave-flash",
".jar","application/java-archive"
};
int anylyse_heep_request(const char* buffer,int len,request_t* request){
char* url = strstr(buffer,"GET /");
if(NULL==url){
printf("[ERROR] HTTP Request ERROR\n");
return -1;
}
url+=strlen("GET /");
len = MIN(MAX(strspn(url,arr),0),100);
request->parm = (char*)malloc(len+1);
memcpy(request->parm,url,len);
request->parm[len] = '\0';
printf("Request URL: %s \n",request->parm);
request->answer = HTTP_FILE;
return 0;
}
void* thread_handler(void* arg){
int fd = *(int *)arg;
char buffer[MAXLEN] = {0};
int res = 0;
request_t request;
while(1){
res = recv(fd,buffer,MAXLEN-1,0);
if(restm_sec);
n = strlen(buffer);
do{
if(n