寫完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的高手一起交流學習。由於我水平不好,而且是真實的從頭到尾的記錄,所以其中,特別是前面...