日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

使用CCHttpClient进行cocos2d-x网络编程

發布時間:2024/3/13 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用CCHttpClient进行cocos2d-x网络编程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


? ? 在我使用的cocos2d-x版本(2.1.2)中,已經將curl融進cocos2d-x框架中。下面動手寫個簡單的網絡程序。

? ?首先創建一個cocos2d-x項目。

? ? 然后我創建了一個網絡連接的類,名叫HttpNetConn。其繼承自CCObject,管理網絡連接的相應功能。

? ??

/** 網絡連接模塊* NetConnect.h* * Created by fansy [2013-6-30]*/#ifndef _NET_CONNECTION_H_ #define _NET_CONNECTION_H_#include <cocos2d.h>USING_NS_CC;class NetConnect: public CCObject { public:CREATE_FUNC(NetConnect);virtual bool init();void getData();void httpReqFinished(CCNode* node,CCObject* obj);};#endif

? ? 其中,getData()是向服務器發請求,httpReqFinished是服務器響應的應答。

? ? 好,接下來,動手實現。

? ? 首先,CCHttpClient在extition中,如果你的包含目錄和我一樣,沒有這個,就要在項目屬性->c/c++->附加包含目錄中添加:$(SolutionDir)\extensions 此項(具體位置可能和我的有些不一樣)。并在其NetConnection.cpp的頭文件處加上:

#include "cocos-ext.h" #include "../extensions/network/HttpClient.h" #include "../extensions/network/HttpRequest.h"USING_NS_CC_EXT;
? ? 接下來,寫getData函數:

void NetConnect::getData() {CCHttpClient* httpClient = CCHttpClient::getInstance();CCHttpRequest* httpReq =new CCHttpRequest();httpReq->setRequestType(CCHttpRequest::kHttpGet);httpReq->setUrl("http://www.baidu.com");httpReq->setResponseCallback(this,callfuncND_selector(NetConnect::httpReqFinished));httpReq->setTag("FirstNet");httpClient->setTimeoutForConnect(30);httpClient->send(httpReq);httpReq->release();}
? ? 覺得邏輯很清晰,就不細解釋了。然后是回調函數:

void NetConnect::httpReqFinished( CCNode* node,CCObject* obj ) {CCHttpResponse* response = (CCHttpResponse*)obj;if (!response->isSucceed()){CCLog("Receive Error! %s\n",response->getErrorBuffer());return ; }const char* tag = response->getHttpRequest()->getTag();if ( 0 == strcmp("FirstNet",tag)){std::vector<char> *data = response->getResponseData();int data_length = data->size();std::string res;for (int i = 0;i<data_length;++i){res+=(*data)[i];}res+='\0';CCLog("%s",res.c_str());} }
? ? ok,F7編譯。發現缺少庫:

1> NetConnect.cpp 1>NetConnect.obj : error LNK2019: 無法解析的外部符號 "public: static class cocos2d::extension::CCHttpClient * __cdecl cocos2d::extension::CCHttpClient::getInstance(void)" (?getInstance@CCHttpClient@extension@cocos2d@@SAPAV123@XZ),該符號在函數 "public: void __thiscall NetConnect::getData(void)" (?getData@NetConnect@@QAEXXZ) 中被引用 1>NetConnect.obj : error LNK2019: 無法解析的外部符號 "public: void __thiscall cocos2d::extension::CCHttpClient::send(class cocos2d::extension::CCHttpRequest *)" (?send@CCHttpClient@extension@cocos2d@@QAEXPAVCCHttpRequest@23@@Z),該符號在函數 "public: void __thiscall NetConnect::getData(void)" (?getData@NetConnect@@QAEXXZ) 中被引用 1>D:\Code\UseLess\HelloCSDN\Debug.win32\HelloCSDN.win32.exe : fatal error LNK1120: 2 個無法解析的外部命令
? ? 缺少libExtensions.lib庫,加上。在項目屬性->鏈接器->附加依賴項中添加:libExtensions.lib。再編譯。

? ? 額...似乎還缺:

1>libExtensions.lib(HttpClient.obj) : error LNK2019: 無法解析的外部符號 __imp__pthread_create,該符號在函數 "private: bool __thiscall cocos2d::extension::CCHttpClient::lazyInitThreadSemphore(void)" (?lazyInitThreadSemphore@CCHttpClient@extension@cocos2d@@AAE_NXZ) 中被引用 1>libExtensions.lib(HttpClient.obj) : error LNK2019: 無法解析的外部符號 __imp__pthread_detach,該符號在函數 "private: bool __thiscall cocos2d::extension::CCHttpClient::lazyInitThreadSemphore(void)" (?lazyInitThreadSemphore@CCHttpClient@extension@cocos2d@@AAE_NXZ) 中被引用 1>libExtensions.lib(HttpClient.obj) : error LNK2019: 無法解析的外部符號 __imp__pthread_exit,該符號在函數 "void * __cdecl cocos2d::extension::networkThread(void *)" (?networkThread@extension@cocos2d@@YAPAXPAX@Z) 中被引用 1>libExtensions.lib(HttpClient.obj) : error LNK2019: 無法解析的外部符號 __imp__pthread_mutex_init,該符號在函數 "private: bool __thiscall cocos2d::extension::CCHttpClient::lazyInitThreadSemphore(void)" (?lazyInitThreadSemphore@CCHttpClient@extension@cocos2d@@AAE_NXZ) 中被引用 1>libExtensions.lib(HttpClient.obj) : error LNK2019: 無法解析的外部符號 __imp__pthread_mutex_destroy,該符號在函數 "void * __cdecl cocos2d::extension::networkThread(void *)" (?networkThread@extension@cocos2d@@YAPAXPAX@Z) 中被引用 1>libExtensions.lib(HttpClient.obj) : error LNK2019: 無法解析的外部符號 __imp__pthread_mutex_lock,該符號在函數 "private: void __thiscall cocos2d::extension::CCHttpClient::dispatchResponseCallbacks(float)" (?dispatchResponseCallbacks@CCHttpClient@extension@cocos2d@@AAEXM@Z) 中被引用 1>libExtensions.lib(HttpClient.obj) : error LNK2019: 無法解析的外部符號 __imp__pthread_mutex_unlock,該符號在函數 "private: void __thiscall cocos2d::extension::CCHttpClient::dispatchResponseCallbacks(float)" (?dispatchResponseCallbacks@CCHttpClient@extension@cocos2d@@AAEXM@Z) 中被引用 1>libExtensions.lib(HttpClient.obj) : error LNK2019: 無法解析的外部符號 __imp__sem_init,該符號在函數 "private: bool __thiscall cocos2d::extension::CCHttpClient::lazyInitThreadSemphore(void)" (?lazyInitThreadSemphore@CCHttpClient@extension@cocos2d@@AAE_NXZ) 中被引用 1>libExtensions.lib(HttpClient.obj) : error LNK2019: 無法解析的外部符號 __imp__sem_destroy,該符號在函數 "void * __cdecl cocos2d::extension::networkThread(void *)" (?networkThread@extension@cocos2d@@YAPAXPAX@Z) 中被引用 1>libExtensions.lib(HttpClient.obj) : error LNK2019: 無法解析的外部符號 __imp__sem_wait,該符號在函數 "void * __cdecl cocos2d::extension::networkThread(void *)" (?networkThread@extension@cocos2d@@YAPAXPAX@Z) 中被引用 1>libExtensions.lib(HttpClient.obj) : error LNK2019: 無法解析的外部符號 __imp__sem_post,該符號在函數 "private: virtual __thiscall cocos2d::extension::CCHttpClient::~CCHttpClient(void)" (??1CCHttpClient@extension@cocos2d@@EAE@XZ) 中被引用 1>libExtensions.lib(HttpClient.obj) : error LNK2019: 無法解析的外部符號 __imp__curl_slist_append,該符號在函數 "int __cdecl cocos2d::extension::processGetTask(class cocos2d::extension::CCHttpRequest *,unsigned int (__cdecl*)(void *,unsigned int,unsigned int,void *),void *,int *)" (?processGetTask@extension@cocos2d@@YAHPAVCCHttpRequest@12@P6AIPAXII1@Z1PAH@Z) 中被引用 1>libExtensions.lib(HttpClient.obj) : error LNK2019: 無法解析的外部符號 __imp__curl_slist_free_all,該符號在函數 "int __cdecl cocos2d::extension::processGetTask(class cocos2d::extension::CCHttpRequest *,unsigned int (__cdecl*)(void *,unsigned int,unsigned int,void *),void *,int *)" (?processGetTask@extension@cocos2d@@YAHPAVCCHttpRequest@12@P6AIPAXII1@Z1PAH@Z) 中被引用 1>libExtensions.lib(HttpClient.obj) : error LNK2019: 無法解析的外部符號 __imp__curl_easy_init,該符號在函數 "int __cdecl cocos2d::extension::processGetTask(class cocos2d::extension::CCHttpRequest *,unsigned int (__cdecl*)(void *,unsigned int,unsigned int,void *),void *,int *)" (?processGetTask@extension@cocos2d@@YAHPAVCCHttpRequest@12@P6AIPAXII1@Z1PAH@Z) 中被引用 1>libExtensions.lib(HttpClient.obj) : error LNK2019: 無法解析的外部符號 __imp__curl_easy_setopt,該符號在函數 "bool __cdecl cocos2d::extension::configureCURL(void *)" (?configureCURL@extension@cocos2d@@YA_NPAX@Z) 中被引用 1>libExtensions.lib(HttpClient.obj) : error LNK2019: 無法解析的外部符號 __imp__curl_easy_perform,該符號在函數 "int __cdecl cocos2d::extension::processGetTask(class cocos2d::extension::CCHttpRequest *,unsigned int (__cdecl*)(void *,unsigned int,unsigned int,void *),void *,int *)" (?processGetTask@extension@cocos2d@@YAHPAVCCHttpRequest@12@P6AIPAXII1@Z1PAH@Z) 中被引用 1>libExtensions.lib(HttpClient.obj) : error LNK2019: 無法解析的外部符號 __imp__curl_easy_cleanup,該符號在函數 "int __cdecl cocos2d::extension::processGetTask(class cocos2d::extension::CCHttpRequest *,unsigned int (__cdecl*)(void *,unsigned int,unsigned int,void *),void *,int *)" (?processGetTask@extension@cocos2d@@YAHPAVCCHttpRequest@12@P6AIPAXII1@Z1PAH@Z) 中被引用 1>libExtensions.lib(HttpClient.obj) : error LNK2019: 無法解析的外部符號 __imp__curl_easy_getinfo,該符號在函數 "int __cdecl cocos2d::extension::processGetTask(class cocos2d::extension::CCHttpRequest *,unsigned int (__cdecl*)(void *,unsigned int,unsigned int,void *),void *,int *)" (?processGetTask@extension@cocos2d@@YAHPAVCCHttpRequest@12@P6AIPAXII1@Z1PAH@Z) 中被引用
? ? 再按之前的方法加入:libcurl_imp.lib、pthreadVCE2.lib 這兩個庫。再編譯,走你。

? ? 終于行了。

? ? 接下來把它加到程序中。先在HelloWorldScene中加入NetConnect.h頭文件。我更改了右下角的那個CCMenuItem的響應。

void HelloWorld::menuCloseCallback(CCObject* pSender) {// "close" menu item clicked//CCDirector::sharedDirector()->end();NetConnect* nc = NetConnect::create();nc->getData(); }

? ? 運行程序,點擊右下角的按鈕。看輸出日志。打出了我們想要的東西。


本篇博客出自阿修羅道,轉載請注明出處:http://blog.csdn.net/fansongy/article/details/9207595
??

? ??

? ??

總結

以上是生活随笔為你收集整理的使用CCHttpClient进行cocos2d-x网络编程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。