您的位置:首页 > 理论基础 > 计算机网络

Xcode如何请求网络并从网络上获得资源

2015-10-27 22:49 686 查看
首先,需要添加cocos中的 curl文件,添加方式跟添加资源一样,当然这个是.h文件

cocos2d/external/curl/include/mac/curl // 引入资源文件

#include "curl.h" // 需要引入这个文件

//数据接收方法

// 这里的stream
不能是String定义的,似乎cocos自带的String并没有append函数
size_t MyServerTest::proData(char *ptr ,
size_t size , size_t num_Mem ,
std::string* str){
if(str ==
NULL)
return 0;
size_t s;
s = size*num_Mem;
// 在这里把 ptr的前s个字符赋值给 stream
,应该就是下面的receive
str->append(ptr,s);
return s;
}

void MyServerTest::menuCallBack(){
// 创建一个curl对象
CURL* curl =
curl_easy_init();
int res;
std::string receive;
char url[30] =
"192.168.0.107/helpGame.jpg";
// 这个url 是我电脑 资源库/webserver/document内的图片
res = curl_easy_setopt( curl ,
CURLOPT_URL , url );
// 这里的功能函数返回的事宜个 size_t类型的数据,传入的应该是个指针,所以加上了取地址符
curl_easy_setopt(curl,
CURLOPT_WRITEFUNCTION , &MyServerTest::proData);
// 这里的receive
也是取的地址,似乎cocos里数据类型都是传得指针
curl_easy_setopt(curl,
CURLOPT_WRITEDATA , &receive);
res = curl_easy_perform(curl);
// 表演的时候,也就是呼叫网络
if(CURLE_OK == res){
CCLOG("网络连接成功");
CCLOG("%s",receive.c_str());
auto img =
new Image(); // 定义一个img对象
img->autorelease();
// 生成该对象
unsigned
char* data = (unsigned
char *)receive.c_str(); // 将从网络返回的数据转化成无符号类型的char*数据
img->initWithImageData(data, receive.length());
// 载入图片资源,应该是在这里把网络返回的数据流转化的。
auto texture =
TextureCache::getInstance()->addImage(img,"helpGame.jpg");
auto sp =
Sprite::createWithTexture(texture);
sp->setPosition(320,480);
this->addChild(sp);

}
curl_easy_cleanup(curl);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: