C- HTTP Web 服务器:如何缓存

C- HTTP web server: how to cache

我知道通过使用 wget INSIDE 我的服务器 c 程序,这是可能的。比如我们要wget facebook.com。然后一个名为 index.html 的文件将下载到我的笔记本电脑。之后,我们必须再次通过网络浏览器调用/facebook.com/index.html到网络服务器。关于如何执行此操作的任何想法?我试图这样做,但这是错误的。

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);
    } 

看看 curl 库。它可以让你做你需要做的,还有更多..

https://curl.haxx.se/