curl是乙個免費開源的網路傳輸庫支援ftp、http、ldap等多種傳輸方式,它存在兩套核心介面:單執行緒傳輸的阻塞方式和非阻塞方式。
單執行緒傳輸的阻塞方式
其使用方式比驕傲簡單,其介面也都是字首為curl_easy_的形式,常見api如下
curl *curl_easy_init(void); //初始化
curlcode curl_easy_setopt(curl *curl,curloption,...); //設定傳輸引數
curlcode curl_easy_perform(curl* curl);//執行當前傳輸
void curl_easy_cleanup(curl *curl);//清理
在這裡我們有必要對curlcode curl_easy_setopt(curl *curl,curloption)做乙個詳細的介紹,它通過定義不同的列舉常量傳遞引數設定。並且它設定的是乙個狀態值,一次設定後除非修改,否則將儲存上次設定的屬性。
其中常見屬性如下(不足的可以檢視api)
curlopt_url //url位址值
curlopt_writefunction //將得到的資料傳遞給相應的函式裡curlopt_writedata //將函式傳遞給相應的第四個引數裡
curlopt_header //如果設定為1,可以返回http頭的值,如果設定為非0值,則可以把乙個頭包含在輸出中
curlopt_infilesize // 如果你需要上傳乙個檔案到遠端站點,這個選項告訴php你上傳檔案的大小
curlopt_timeout //設定乙個長整數型,作為最大延續多少秒
curlopt_low_speed_limit //設定乙個長整數型,控制傳送多少位元組
curlopt_cookie //傳遞乙個包含http cookie的標頭檔案
curlopt_customrequest //當進行http請求時,傳遞乙個字元被get和head使用
curlopt_file //傳送的輸出檔案
curlopt_infile //傳送過來的輸出檔案
curlopt_writeheader //輸出的頭部分
curlopt_proxyuserpwd //傳遞乙個[user]:[psw]格式的字串去連線http **
curlopt_postfields //傳遞乙個作為http post操作的所有資料的字串
curlopt_referer //在http請求中包含乙個referer頭的字串
curlopt_useragent //在http請求中包含乙個user-agent頭的字串
curlopt_ftpport //傳遞乙個包含被ftp post指令使用的ip位址
非阻塞傳輸
非阻塞傳輸允許並行地進行多個網路請求,其主要介面如下
curlm *curl_multi_init(void);
curlmcode *curl_multi_add_handle(curlm *multi_handle,curl *curl_handle); //新增乙個傳輸乙個請求
curlmcode *curl_multi_perform(curlm* multi_handle,int *running_handles);
curlmcode *curl_multi_cleanup(curlm *multi_handle);
非阻塞傳輸搭建在阻塞傳輸的基礎上,因此也比較簡單。
首先,我們利用初始化函式初始化乙個curlm物件
然後初始化若干個curl物件,並通過
curlmcode *curl_multi_add_handle(curlm *multi_handle,curl *curl_handle)
將其新增到curlm物件中。
最後我們呼叫 curl_multi_perform函式即可。
cocos2d x 之UITextField的使用
本文使用的是cocos2d x 2.1.6版本,cocosstudio1.6.0.0版本。其呼叫的相關 如下 bool helloworld init void helloworld textfieldevent ccobject psender,textfiledeventtype type 不過...
Cocos2d x之場景切換
在很多rpg遊戲中大部分存在多個場景,如開始的歡迎介面 選單介面 戰鬥介面 場景切換只需要呼叫ccdirector shareddirector replacescene s s為新的場景,這句 的是含意,是用新的場景s去替換掉舊的場景,但是這樣的場景替換,來得太突然,給使用者的感覺不太好,我們需要...
cocos2dx之CCAnimate建立乙個動畫
前面的文章中也有例子是建立乙個動畫,利用的是檔案建立,將所有的sprite載入到乙個檔案中去,然後讀出,現在我們嘗試不用檔案,直接利用ccanimate來建立乙個sprite動畫,例子 如下 void myactionanimatelayer initlayer sprintf szname,ima...