cocos2d-x中的curl


將請求的接口的動作放在互斥鎖中進行

   1:  
   2:  
   3: pthread_mutex_t mutex;
   4: pthread_t thread;
   5: sem_t * m_structSem;
   6:  
   7: struct SimpleStructure
   8: {
   9:     int data;
  10:     float otherData;
  11: };
  12:  
  13: void* ThreadFunction(void* arg)
  14: {
  15:     pthread_mutex_lock(&mutex);
  16:     SimpleStructure* args = (SimpleStructure*)arg;
  17:     
  18:     //todo...
  19:  
  20:     delete args;
  21:     pthread_mutex_unlock(&mutex);
  22:  
  23:     pthread_mutex_destroy(&mutex);
  24:     sem_destroy(m_structSem);
  25:  
  26:     return NULL;
  27: }
  28:  
  29: pthread_mutex_init(&mutex, NULL);
  30: m_structSem = sem_open(strThreadName.c_str(), O_CREAT, 0644, 0)
  31:  
  32: //
  33: SimpleStructure* args = new SimpleStructure();
  34: args->data = 1;
  35: args->otherData = 2.0f;
  36: //
  37: pthread_create(&thread, NULL, &ThreadFunction, args);
  38:  
  39:  

 

使用CURL(Cocos2d-x中將curl做為第三方庫加入進來,它被放在cocos2dx/platform/third-party/win32的curl目錄下)

   1: CURL * curl;
   2:  
   3: string strHtml;
   4: string strRetData = "";
   5:  
   6: //第一步:初始化CURL,取得初始化成功后的CURL指針。
   7: curl = curl_easy_init();
   8:  
   9: if (!curl)
  10: {
  11:     return false;
  12: }
  13:  
  14: CCLOG("Http get string, conn: %s, url: %s", strConnName.c_str(), strUrl.c_str());
  15:  
  16: curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, HttpWriteString);
  17: curl_easy_setopt(curl, CURLOPT_WRITEDATA, &strHtml);
  18: curl_easy_setopt(curl, CURLOPT_FAILONERROR, true);
  19: curl_easy_setopt(curl, CURLOPT_TIMEOUT, 10);
  20:  
  21: //這里定義一個CURL庫中API的返回值,用於取得API調用的結果。  
  22: CURLcode res;
  23:  
  24: //第二步,設定我們用此CURL指針來完成的動作。
  25: //參數一為CURL指針,參數二為相應的動作類型枚舉,這個枚舉值在curl.h中定義,比如本例中的CURLOPT_URL,定義為CINIT(URL,  OBJECTPOINT, 2),即聯接一個網站的HTTP服務。
  26: //參數三為動作對應的數據參數,這里是網站的URL地址。  
  27: curl_easy_setopt(curl, CURLOPT_URL, strUrl.c_str());
  28:  
  29: ///第三步,執行上面設定的動作處理。返回結果放在res中。  
  30: res = curl_easy_perform(curl);  
  31:  
  32: //最后一步,清除CURL指針,結束對CURL庫的使用。  
  33: curl_easy_cleanup(curl); 
  34:  
  35: if (res == CURLE_OK)
  36: {
  37:     strRetData = strHtml;
  38:  
  39:     CCLOG("Http get string, conn: %s, ret: %s", strConnName.c_str(), strRetData.c_str());    
  40: }
  41: else 
  42: {
  43:     //request error
  44: }
  45:  
  46: strRetData = "";
  47:  
  48: CC_SAFE_DELETE(curl);

 

 

參考:

How to use pthread

cocos2d-x中的CurlTest深入分析


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM