原创 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