cocos2dx網路傳輸之CURL

2021-06-21 09:43:20 字數 2666 閱讀 3604

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...