原创 JSON數據key和value之間有空格問題

       項目終於暫時告一段落了,之前在幫Microsoft調試一些功能,根據Microsoft提供的SPEC,要求返回數據爲JSON格式,並且嚴格要求key和value之間不能有空格,可能會導致Microsoft無法正常解析返回結果

原创 Thttpd上傳大文件的方法

      最近在給Microsoft做一個項目,碰到需要上傳幾百MB的文件,而thttpd本身也是支持上傳文件功能的,只是thttpd爲了考慮一些需求在某些方面進行了限制。      這裏我做個簡單的介紹,thttpd的main()函數

原创 printf打印設置字體和背景帶顏色的輸出方法

       爲了方便調試,難免會加一些log信息,當有大量log時,去翻閱很難一眼看出錯誤信息,這時就可以對log設置某些顏色或者高亮度等等。 具體格式如下:    printf("\033[字背景顏色;字體顏色m 字符串 \033[0

原创 buildroot package如何打patch

今天修改了thttpd的源碼,需要通過在buildroot package裏面通過打patch的方式。 其實打patch的方式很簡單,只要把生成的patch文件放在對應目錄下,比如thttpd 放在後重新make clean,make命

原创 lighttpd使用

       之前在項目中使用的是thttpd,由於thttpd是用明文發送的,爲了安全考慮,用https來代替http,增加了證書認證功能,所以最後選擇了lighttpd。       lighttpd支持了cgi和fcgi,thttp

原创 I/O多路複用select、poll、epoll的區別使用

I/O 多路複用技術是爲了解決進程或線程阻塞到某個 I/O 系統調用而出現的技術,使進程不阻塞於某個特定的 I/O 系統調用。 select(),poll(),epoll()都是I/O多路複用的機制。I/O多路複用通過一種

原创 HTTP協議(下):HTTP協議實現通信

1. 概述 服務器的開發不容易,尤其是開發高性能、穩定性好服務器,更加不容易,因此人們嘗試更好簡單的方式來開發軟件。 在服務器方面,使用Web服務器,採用HTTP協議來代替底層的socket,是常見的選擇。採用HTTP協議更加除了能

原创 do...while(0)解析

爲什麼在內核中碰到很多  #define ...  do{...} while(0) ? 有以下幾點原因: 1、空語句在編譯的時候會出現警告,所以有必要用#define FOO do{ } while(0) 2、給定一個基本塊,可

原创 文件描述符的複製:dup()和dup2()

dup() 和 dup2() 是兩個非常有用的系統調用,都是用來複制一個文件的描述符,使新的文件描述符也標識舊的文件描述符所標識的文件。 這個過程類似於現實生活中的配鑰匙,鑰匙相當於文件描述符,鎖相當於文件,本來一個鑰匙開一把鎖,

原创 C語言可變參數的使用

概要 衆所周知,C++支出函數重載,而C語言默認是不支持。但是,c語言可以通過可變參數實現類似函數重載的功能。 如 Linux C 的open()函數,這個函數有2個版本。有一個可選的第三個參數時只需要文件可能被創建。第三個參數描述了使用

原创 Linux crontab 命令詳解

       在 Linux 中,任務可以被配置在指定的時間段、指定的日期、或系統平均載量低於指定的數量時自動運行。系統預配置了對重要系統任務的運行,以便使系統能夠時時被更新。譬如,被 locate 命令使用的 slocate 數據庫每

原创 vi快捷鍵

今天分享一些常用的vi快捷鍵,後續有遇到會繼續添加。   移動光標 上:k nk:向上移動n行 9999k或gg可以移到第一行 G移到最後一行 下:j nj:向下移動n行 左:h nh:向左移動n列 右:l nl:向右移動n列 w:光標以

原创 網絡流媒體協議之——RTSP協議

RTSP(Real-Time Stream Protocol)協議是一個基於文本的多媒體播放控制協議,屬於應用層。RTSP以客戶端方式工作,對流媒體提供播放、暫停、後退、前進等操作。該標準由IETF指定,對應的協議是RFC2326。  

原创 使用libcurl庫進行http通訊網絡編程

  一、LibCurl基本編程框架 二、一些基本的函數 三、curl_easy_setopt函數部分選項介紹 四、curl_easy_perform 函數說明(error 狀態碼) 五、libcurl使用的HTTP消息頭 六、獲取http

原创 C語言實現遍歷目錄並用樹狀打印

頭文件: #include <sys/types.h> #include <dirent.h> struct dirent {     ino_t d_ino; //d_ino 此目錄進入點的inode     ff_t d_off