注:本文为作者原创,其中知识内容出自闪电终结者的视频课程
环境:OS X10
涉及软件
Cocos
Xcode
VS code
APACHE
在Mac中自带了php和APACHE
关于APACHE
打开终端
重启apache:sudo apachectl restart
关闭apache:sudo apachectl stop
开启apache:sudo apachectl start
网络知识
服务器:在电脑网路中,服务器为其他客户端来提供某一些服务
服务器接收客户端的请求,然后做一些处理在返还给客户端一些数据
任何电脑都能充当服务器
应用程序的数据
JSON (JavaScript Object Notation) 一种数据的打包形式
数据的建立
数据的拆建
在断网下也能访问到的,放在本地
客户的账号之类的放在服务器端
http协议, 进行网络请求,
URL(Uniform Resource Locator)地址使用服务器所在的网关的IP地址
通过http协议访问到这个网关地址中的某个php文件,
将得到的数据打包成php表单,发送给php脚本,从而获取到服务器上php脚本启动的返回值
得到返回值后,在吧数据进行解包,在本地使用
APACHE 服务器软件(能把电脑环境配置成为服务器
php脚本有一个御用数据库MySQL(Structured Query Language)
以这个语言为查询语言的数据库都叫SQL
数据库
客户端 -》 服务端 -》 数据库 -》 同一个服务器 -》 客户端
计算机网络
每个地方都有个ip地址,相当于门牌号
子网掩码,默认网关,DNS服务器
在同一个网段下的人可以互相访问,
比如255.255.255.0
八个1.八个1.八个1.0 1表示盖住0表示展开
只要前三个部分的数字相同,后面不管多少都表示属于同一个网段
(同个wifi下的设备一般都属于一个网段)
127 开头的,不可以在网络上使用,被作为故障排除debug的Ip
127.0.0.1 都代表自己
测试连接
打开命令行
ping + ip地址
当出现
64 bytes from 192.168.0.105: icmp_seq=0 ttl=64 time=0.046 ms
64 bytes from 192.168.0.105: icmp_seq=1 ttl=64 time=0.064 ms
64 bytes from 192.168.0.105: icmp_seq=2 ttl=64 time=0.059 ms
64 bytes from 192.168.0.105: icmp_seq=3 ttl=64 time=0.072 ms
等类似字符时候,表示连接成功
创建一个text.html文件,输入代码(用编辑器打开):
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"></head>
<body>
<h1>这是一个大的标题</h1>
<h2 style="font-color:#ff0000">这是一个小标题</h2>
</body>
</html>
保存,任意打开一个浏览器,输入
127.0.0.1/text.html
// 或者 ip地址/text.html
在同个wifi下(同一个网段下)的其他电脑也是如此
连到一个wifi下一般就是在一个网段下
创建一个phptext.php文件,加入代码:
<?php
for ($index = 1; $index < 5; $index++) {
echo "<h$index>$index level titile</h$index>";
}
在浏览器中打开方式如上
测试证明:
编译脚本php -> 当有客户端访问到这个文件时候,服务器会把脚本解码,变成文本数据,返回给需要请求的数据
html代码,直接文件然后解析
Cococ网络访问
// 通过访问地址,得到返回值在改label
// 设置网络请求的一个对象(开始整理一个请求)
auto *request = new cocos2d::network::HttpRequest;
// 给对象设置url地址
request -> setUrl("http://127.0.0.1/phptext.php"); // 必须把http://协议写上,但是cocos不支持http,这里需要改设置,下面会详细说
// 设置网络请求类型,get仅仅得到数据,post是发送表单数据
request -> setRequestType(cocos2d::network::HttpRequest::Type::GET);
// 网络请求需要多线程,因为网络请求和网速有关,
// 网络请求时候,对UI处理不受影响
// 发送数据
// ___________主线程______________>
// ___网络请求__》 ———网络回执—————》
// 请求数据
// 把请求数据放在网络请求后,中间需要等待
// 连接到 数据请求之后调用的方法
// 第一个参数为网络请求的对象, 第二个参数为网络请求的回执,被打包成HttpResponse类型
request -> setResponseCallback([](cocos2d::network::HttpClient* sender, cocos2d::network::HttpResponse* response) {
// 网络请求是否正常返回数据
if (!response -> isSucceed()) return;
std::vector <char> *vec = response -> getResponseData();
std::string str(vec -> begin(), vec -> end());
cocos2d::log("读取:%s", str.c_str()); // 转成c语言字符串打印
// std::cout << str;
});
// 找到cocos2d::network::HttpClient类的单例 -》 发送这个请求(把这个设置完的请求通过HttpClient唯一的对象发送出去)
cocos2d::network::HttpClient::getInstance() -> send(request);
找到ios下的Icons下的Info.plist文件
点加号,加一项 App Transport Security Settings
点加号,加一项Allow Arbitrary Loads
把右边的NO改为YES即可