Tinyhttpd原始碼學習 httpd c 《四》

2021-07-29 16:07:48 字數 1144 閱讀 5185

寫完startup,下乙個就是accept_request,這裡是處理請求的主要邏輯

void accept_request(void *arg)

j=i;

method[i] = '\0';

//-------------    http協議,最開始的字元的請求方式如:get/post,存入method這個字元陣列中

if (strcasecmp(method, "get") && strcasecmp(method, "post"))

//-------------------- 不是get請求,也不是post請求,則呼叫unimplemented方法來處理

if (strcasecmp(method, "post") == 0)

cgi = 1;

//---------------------  post請求,是cgi程式

i = 0;

while (isspace(buf[j]) && (j < numchars))

j++;

while (!isspace(buf[j]) && (i < sizeof(url) - 1) && (j < numchars))

url[i] = '\0';

//---------------------  http協議,請求方式後面是空格,空格後面就是url , 將url放入字元陣列url中

if (strcasecmp(method, "get") == 0)

}//---------------------  如果是get請求,url問號後面跟的是請求的引數列表,放入變數query_string

sprintf(path, "htdocs%s", url);

//---------------------- 為path賦值 這裡是htdocs/.../.../,預設需要訪問的內容放在htdocs下面

if (path[strlen(path) - 1] == '/')

strcat(path, "index.html");

//--------------------  如果path 以 / 結尾, 則是path/index.html

if (stat(path, &st) == -1)

else

close(client);

}

原始碼學習 ArrayList的擴容原始碼分析

原始碼如下 下面是arraylist的擴容機制 arraylist的擴容機制提高了效能,如果每次只擴充乙個,那麼頻繁的插入會導致頻繁的拷貝,降低效能,而arraylist的擴容機制避免了這種情況。如有必要,增加此arraylist例項的容量,以確保它至少能容納元素的數量 param mincapac...

PicoContainer原始碼學習

介紹下自己,我叫stef wu,是個菜鳥,現在在easyjf團隊學習,得到了大峽等人的熱情幫助。本序列文章是以前在學習研究picocontainer時所記錄下來的,希望借本文,能和正在學習pico新手或者研究pico的高手一起交流學習。由於我水平不好,而且是真實的從頭到尾的記錄,所以其中,特別是前面...

PicoContainer原始碼學習

介紹下自己,我叫stef wu,是個菜鳥,現在在easyjf團隊學習,得到了大峽等人的熱情幫助。本序列文章是以前在學習研究picocontainer時所記錄下來的,希望借本文,能和正在學習pico新手或者研究pico的高手一起交流學習。由於我水平不好,而且是真實的從頭到尾的記錄,所以其中,特別是前面...