2016-12-19 107 views
0

我知道,通过使用wget INSIDE我的C程序服务器,这是可能的。例如,我们必须wget facebook.com。然后一个名为index.html的文件将被下载到我的笔记本电脑上。之后,我们必须再次通过网络浏览器呼叫/facebook.com/index.html到网络服务器。任何想法如何做到这一点?我试图做到这一点,但这是错误的。C- HTTP Web服务器:如何缓存

int connection(int fd, int portnum) { 
char request[500], resource[500], answer, *ptr; 
int fd1, length,c1,c2; 
if (recv_new(fd, request) == 0) { 
    printf("Receive Failed\n"); 
} 
printf("%s\n", request); 
// Check for a valid browser request 
ptr = strstr(request, " HTTP/"); 
if (ptr == NULL) { 
    printf("NOT HTTP !\n"); 
} else { 
    *ptr = 0; 
    ptr = NULL; 
    if (strncmp(request, "GET ", 4) == 0) { 
    ptr = request + 4; 
    } 
    if (ptr == NULL) { 
    printf("Unknown Request ! \n"); 
    } else { 
    if (ptr[strlen(ptr) - 1] == '/') { 
    strcat(ptr, "test.html"); 
    } 
    char s1[100] = "facebook.com"; 
    char s2[100] = "twitter.com"; 
    c1 = strncmp(s1,ptr,100); 
    c2 = strncmp(s2,ptr,100); 
    if((c1==0)||(c2==0)) 
    { 
    printf("ACCESS DENIED\n"); 
    } 
    //how to compare strings 
    strcpy(resource, webroot()); 
    strcat(resource, ptr); 
    char* s = strchr(ptr, '.'); 
    int i; 
    for (i = 0; extensions[i].ext != NULL; i++) { 
    if (strcmp(s + 1, extensions[i].ext) == 0) { 
    fd1 = open(resource, O_RDONLY, 0); 
    printf("Opening \"%s\"\n", resource); 
    system("wget -E -H -k -K -p localhost:8888"); //lets assume that this is the default port number 
    printf("Do you want to reload your recent website?\n"); 
    scanf(" %c", &answer); 
    if(answer=='Y'||answer=='y') 
    { 
    fd1 = open(resource, O_RDONLY, 0); 
    printf("Opening \"%s\"\n", resource); 
    } 

回答