Ubuntu 14.04 64bit上curl-7.37源码包中的sample 源码示例研究
生活随笔
收集整理的這篇文章主要介紹了
Ubuntu 14.04 64bit上curl-7.37源码包中的sample 源码示例研究
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
curl是Linux平臺上(本人不考慮其他平臺)很好用的一個工具軟件,它有命令行,有C接口API,更常見的編程用途是php和python版本。如果在C/C++平臺上使用curl,可以直接去官網
http://www.curl.haxx.se/
下載最新版的源碼來研究。這里以當前官網最新的curl-7.37.1為例說明其附帶例子的使用說明。
編譯samples實例的方法 在curl-7.37.1/docs/examples/目錄下有很多例子,大致有100個左右吧,對我們使用C/C++開發很有幫助: 如何批量編譯并運行這些例子呢?我首先是查看該目錄下面的README文件來尋求幫助: 批量編譯的方法是: 直接運行該目錄下面的Makefile文件: make 就會批量生成所有example的可執行文件 單獨編譯的方法是: 對每個例子,閱讀源碼時,可能我們需要更改某些代碼,比如更改下載鏈接,添加設置選項等等,使用下面的命令可以單獨編譯 ·curl-config --cc· -o example example.c `curl-config --cflags --libs` ?這種方法在Ubuntu 14.04上是可行的 在命令行運行 curl-config --cflags 來獲取libcurl頭文件的包含路徑;在命令行運行 curl-config --libs 來獲取libcurl庫及其它依賴的庫的路徑 使用下面的命令 curl-config --feature 來查看libcurl實際支持的特性,參見下面的截圖
典型實例說明 從README中我們可以知道每個示例代碼的作用,比如我看過下面的例子 10-at-a-time.c ? 在一個線程中同時下載多個文件,每次10個,代碼比較經典 multithread.c ? ? 使用多線程(這里是4個)下載多個文件 multi-single.c ? ? 在一個線程中同時下載多個文件,混合使用curl的easy和multi接口,這里僅給出1個文件的下載 multi-app.c ? ? ? ?在一個線程中同時下載2個文件,上傳一個文件,混合使用curl的easy和multi接口,具有實際編程使用價值 multi-double.c ? 在一個線程中同時下載2個文件,比上例簡單 multi-debugcallback.c ?在一個線程中同時下載多個文件,在屏幕上打印出數據信息 multi-uv.c ? ? ? ? ? 在一個線程中異步多任務,用到epoll和libuv,沒有使用select,超高難度,有較高參考價值 asiohiper.cpp ? ? 使用boost::asio和multi接口來下載文件,難度較大,具有實際編程參考價值 simple.c ? ? ? ? ? ? ?最簡單的下載一個url resource,直接使用curl easy api getinfo.c ? ? ? ? ? ? 獲取下載相關的信息,直接使用curl easy api chkspeed.c ? ? ? ? 通過下載不同的文件來測試下載速度 progressfunc.c ? ?使用easy api下載某文件時,給出xfer這個選項的具體信息,需要開啟CURLOPT_NOPROGRESS選項為0 url2file.c ? ? ? ? ? ? ?使用easy api下載一個指定的url,并將響應存為一個文件,我的限速demo就是按照這個寫的。 persistant.c ? ? ? ? ?使用easy api,長鏈接, 在一個tcp連接中連續下載多個文件。這里是連續下載同一臺服務器上的2個文件 httpcustomheader.c ? 使用easy api,設置用戶自定義的http header來進行傳輸 我們在開發程序的過程中,就按照這里的樣例代碼照著編寫就可以了。
參考文獻 [1].http://www.curl.haxx.se/ [2].https://github.com/mologie/curl-asio [3].https://github.com/jmathai/php-multi-curl [4].http://blog.csdn.net/lizhi200404520/article/details/6583710
下載最新版的源碼來研究。這里以當前官網最新的curl-7.37.1為例說明其附帶例子的使用說明。
編譯samples實例的方法 在curl-7.37.1/docs/examples/目錄下有很多例子,大致有100個左右吧,對我們使用C/C++開發很有幫助: 如何批量編譯并運行這些例子呢?我首先是查看該目錄下面的README文件來尋求幫助: 批量編譯的方法是: 直接運行該目錄下面的Makefile文件: make 就會批量生成所有example的可執行文件 單獨編譯的方法是: 對每個例子,閱讀源碼時,可能我們需要更改某些代碼,比如更改下載鏈接,添加設置選項等等,使用下面的命令可以單獨編譯 ·curl-config --cc· -o example example.c `curl-config --cflags --libs` ?這種方法在Ubuntu 14.04上是可行的 在命令行運行 curl-config --cflags 來獲取libcurl頭文件的包含路徑;在命令行運行 curl-config --libs 來獲取libcurl庫及其它依賴的庫的路徑 使用下面的命令 curl-config --feature 來查看libcurl實際支持的特性,參見下面的截圖
典型實例說明 從README中我們可以知道每個示例代碼的作用,比如我看過下面的例子 10-at-a-time.c ? 在一個線程中同時下載多個文件,每次10個,代碼比較經典 multithread.c ? ? 使用多線程(這里是4個)下載多個文件 multi-single.c ? ? 在一個線程中同時下載多個文件,混合使用curl的easy和multi接口,這里僅給出1個文件的下載 multi-app.c ? ? ? ?在一個線程中同時下載2個文件,上傳一個文件,混合使用curl的easy和multi接口,具有實際編程使用價值 multi-double.c ? 在一個線程中同時下載2個文件,比上例簡單 multi-debugcallback.c ?在一個線程中同時下載多個文件,在屏幕上打印出數據信息 multi-uv.c ? ? ? ? ? 在一個線程中異步多任務,用到epoll和libuv,沒有使用select,超高難度,有較高參考價值 asiohiper.cpp ? ? 使用boost::asio和multi接口來下載文件,難度較大,具有實際編程參考價值 simple.c ? ? ? ? ? ? ?最簡單的下載一個url resource,直接使用curl easy api getinfo.c ? ? ? ? ? ? 獲取下載相關的信息,直接使用curl easy api chkspeed.c ? ? ? ? 通過下載不同的文件來測試下載速度 progressfunc.c ? ?使用easy api下載某文件時,給出xfer這個選項的具體信息,需要開啟CURLOPT_NOPROGRESS選項為0 url2file.c ? ? ? ? ? ? ?使用easy api下載一個指定的url,并將響應存為一個文件,我的限速demo就是按照這個寫的。 persistant.c ? ? ? ? ?使用easy api,長鏈接, 在一個tcp連接中連續下載多個文件。這里是連續下載同一臺服務器上的2個文件 httpcustomheader.c ? 使用easy api,設置用戶自定義的http header來進行傳輸 我們在開發程序的過程中,就按照這里的樣例代碼照著編寫就可以了。
參考文獻 [1].http://www.curl.haxx.se/ [2].https://github.com/mologie/curl-asio [3].https://github.com/jmathai/php-multi-curl [4].http://blog.csdn.net/lizhi200404520/article/details/6583710
總結
以上是生活随笔為你收集整理的Ubuntu 14.04 64bit上curl-7.37源码包中的sample 源码示例研究的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ncurse界面编程多线程示例
- 下一篇: libcurl+ncurses 分段ra