标签:cocos2d-x cocos2d-x网格编程 php 服务器
//0 获取用户名和密码
string strUser = txtUser->getString();
string strPass = txtPass->getString();
//1 curl初始化
CURL* curl = curl_easy_init();
if (curl) //如果初始化成功
{
char url[1000] = {0};
//我们根据用户输入的用户名和密码拼出请求url
sprintf(url, "http://127.0.0.1/testPhp/checkLogin02.php?uname=%s&upass=%s",strUser.c_str(), strPass.c_str());
int res;
//2 网络连接初始化
res = curl_easy_setopt(curl, CURLOPT_URL, url); //设置要连接的网址, res返回0表示成功
//3 设定数据接收方法
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, processData);
//4 设定数据接收变量
std::string recvbuf;
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &recvbuf);
//5 发起联网请求
res = curl_easy_perform(curl);
//6 处理结果,根据网络连接返回的结果实现跳转和提示
if (CURLE_OK == res) //CURLE_OK == 0
{
if (recvbuf.compare("1")==0) //如果返回结果为1,即用户名和密码匹配上
{
//保存用户的name
//HelloWorld::setUname(strUser);
//登录成功,跳转到游戏场景,这里GameScene就是诸位的正式游戏场景,我没实现,请见谅
//Director::getInstance()->replaceScene(GameScene::scene());
lblResult->setString("Login Success!");
}
else //否则登录失败
{
lblResult->setString("Login Failed!");
}
}
}注释的很详细,大家也能看出curl的基本用法,需要curl_easy_setopt设置下CURLOPT_URL:请求网址, 设置CURLOPT_WRITEFUNCTION:数据接收的方法,还有CURLOPT_WRITEDATA:用于存放接受返回数据的字符串。其中CURLOPT_WRITEFUNCTION非常重要,决定了接收数据成功与否是什么。然后一切设定好后执行curl_easy_perform就可以执行网络请求,并得到服务器发来的响应数据,就是我们想要的登录是否成功。size_t processData(char *ptr, std::size_t size, std::size_t nmemb, std::string *stream)
{
//char* ptr就是返回的服务器数据,服务器echo 1,这里就返回"1"
log("正在写入数据");
if (stream == NULL)
{
return 0;
}
size_t sizes = size * nmemb;
//string* ss = (string *)stream;
stream->append(ptr, sizes);
return sizes;
}函数参数格式要严格照此书写,注意不能把此函数写成类的成员函数,只能写成类内部函数,否则执行curl_easy_perform铁定出错,此函数参数char* ptr是服务器传回的数据首地址,size大概是一个数据包多少字节,nmemb大概是有多少数据包意思,stream就是我们在设置CURLOPT_WRITEDATA时设置的接收数据字符串recvbuf,这样一来函数意思也就很明白了,无非就是根据服务器返回的字节多少把char* ptr内存的数据拷到stream,就是recvbuf里去,这样我们就得到了服务器返回的接收数据标签:cocos2d-x cocos2d-x网格编程 php 服务器
原文地址:http://blog.csdn.net/qiou2719/article/details/46301179