Cocos网络访问

来源:互联网 发布:病毒源码 编辑:程序博客网 时间:2024/06/03 15:06

注:本文为作者原创,其中知识内容出自闪电终结者的视频课程

环境: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 ms64 bytes from 192.168.0.105: icmp_seq=1 ttl=64 time=0.064 ms64 bytes from 192.168.0.105: icmp_seq=2 ttl=64 time=0.059 ms64 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即可

0 0
原创粉丝点击