【C/S通讯交互之Http篇】Cocos2dx(Client)使用Curl与Jetty(Server)完结手提式有线电话机网游Http通信框架(内含解决curl.h头文件找不到标题)

【C/S通讯交互之Socket篇】Cocos2dx(Client)使用BSD
Socket与Mina(Server)手提式有线话机网游通讯框架!

前日跟朋友一块玩游戏,网速感觉某个好就下了1个免费的今日头条UU加快器来给对战平台加速,结果加快了之后网速更差,笔者晕,于是想卸载,可那些增长速度器口唯有3个exe文件,不用安装,但在首先次加快时纪念安装了3个网卡,所以上网找了须臾间卸载的法子,计算如下:

 

3:删除用来运转的uu.exe文件。

我们需求修改的是此属性的上2个属性,Header Search Paths;

1:在自己的微处理器上右键—属性—设备管理器—查看—展现隐藏设备(必需显示,不然看不到虚拟网卡)—互联网适配器—找到“Netease
uu”关键字,右键卸载。

双击Header Search
Paths属性前边的一连,然后点击“+”号加上二个途径,这么些途径就是刚刚您copy的不二法门,不过粘贴后还要将此路径设置到上3个文本夹的路径;这么说有点绕,其实正是之类:

2:在c盘分别搜索“Netease”,“netease”
(推荐应用everything软件搜索,速度迅猛)关键字(注意分寸写),发现前边还带的uu的都剔除。

图片 1

那边对于Server端,Himi选取,Jetty,对于Jetty不太纯熟的能够先自行baidu~google~是个servlet的容器。类似JSP。
什么是servlet?jsp? = =。不赘述了。大家手动好呢;

 

1
2
2012-05-25 16:43:04.767:INFO:oejs.Server:jetty-8.1.3.v20120416
2012-05-25 16:43:05.110:INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:8080

编写翻译成功后,command+瑞鹰运维品种,观望xcode控制台打印,以及服务器端打字与印刷:平常情状下应该如下:

图片 2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
bool HelloWorld::init()
{
 
/*
 *@author By Himi
 */
 
    //////////////////////////////
    // 1. super init first
    if ( !CCLayer::init() )
    {
        return false;
    }
    CCLabelTTF* pLabel = CCLabelTTF::labelWithString("Hello World""Thonburi", 34);
    CCSize size = CCDirector::sharedDirector()->getWinSize();
    pLabel->setPosition( ccp(size.width / 2, size.height - 20) );
    this->addChild(pLabel, 1);
 
    CURL *curl;
    CURLcode res;
    char buffer[10];
 
    curl = curl_easy_init();
    if (curl)
    {
//        curl_easy_setopt(curl, CURLOPT_URL, "http://127.0.0.1:8080/himi");
        curl_easy_setopt(curl, CURLOPT_URL, "http://127.0.0.1:8080/himi?name=xiaoming&password=李华明");
        res = curl_easy_perform(curl);
        /* always cleanup */
        curl_easy_cleanup(curl);
        if (res == 0)
        {
            pLabel->setString("0 response");
        }
        else
        {
            sprintf(buffer,"code: %i",res);
            pLabel->setString(buffer);
        }
    }
    else
    {
        pLabel->setString("no curl");
    }
 
    return true;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
ServletServer.java
 
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
 
import servlet.HServlet;
 
/**
 * @author Himi
 */
public class ServletServer {
    public static void main(String[] args) throws Exception {
        Server server = new Server(8080); 
 
        ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
        context.setContextPath("/"); 
 
        server.setHandler(context); 
 
        context.addServlet(new ServletHolder(new HServlet()), "/himi"); 
 
        server.start();
        server.join();
    }
}

OK,假若上述步骤都操作平常那么编写翻译将从未任何难题;

 

OK,然后大家导入 curl.h头文件:

在xcode中式点心击你的cocos2dx系列,然后采用你项指标 targets,然后在Build
Settings中找到 Search Paths:

此处就ibu写创设项目和配置项目标jar包 build path了。直接上器重代码段:

率先新建三个cocos2dx连串,这几个不多说。然后在私下认可的HelloWorldScene.cpp
发轫化函数替换如下代码:

事先已经享受过一篇基于Cocos2dx与服务器使用Socket举行通讯的框架,还不太熟谙的请移步到如下博文中:

     
OK,运行大家的Jetty服务器,右键ServletServer.Java run,观望控制台:

出现如上,表示你的Jetty Server运行成功;OK。然后设计客户端代码;

———–然后cocos2dx Clinet端————–

图片 3

设若你从前copy的门道是  “$…../third_party/ios/libraries”

  1.   到场 libcurl.a
    文件:(此文件暗中认可在cocos2dx引擎包下的cocos2dx/platform/third_party/iOS/libraries文件夹下)

———–首先服务器端————–

1
#include "curl/curl.h"

上边那些”$…../third_party/ios/libraries”路径是你首先步添加lib
curl.a的时候默许添加的。这些大家毫不涂改;不过请双击那一个路径然后copy下来;

http://blog.csdn.net/linking530/article/details/39401155

双击你的 Library Search Paths 观望:如下图:

然后是我们的三个Servlet类:

       首先是Jetty  Server主类:(这里Himi用的IDE 是 Eclipse)

OK,Himi这里的路径也截图给大家一张方便人民群众相比较:

大家的Servlet里,正是赢得http
clinet端传过来的数量重临回去。中间不难写给客户端一些粗略字符串~

那就是表明天Himi来享受什么在cocos2dx中利用Http来访问Server端并且获取数据;

 

别着急这时候还会唤开端文件找不到;

       提醒
那里客户端与服务器只是不难的http交互,没有更细节的处理,例如
Client端访问应该另起四个线程,交互的时候数据要有一定的商谈正式等等那一个在介绍Socket的时候都有说过了,那里就不多说了;

还没完,那时候提醒大家找不到这一个头文件,OK,继续操作两步如下:

图片 4

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
HServlet.java
 
package servlet;
 
import java.io.IOException;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
/**
 * @author Himi
 */
public class HServlet extends HttpServlet {
    private static final long serialVersionUID = 1L; 
 
    public HServlet() {
    
 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {
        System.out.println("~~~~有一个Clinet访问!~~~~");
 
        //获取http Client端对应的两个字段的数据
        String name = request.getParameter("name");
        String password = request.getParameter("password");
        //设置字符编码
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html");
        response.setStatus(HttpServletResponse.SC_OK);
        response.getWriter().println("Server say: 测试中文:session=" + request.getSession(true).getId()); 
 
        if(name!=null) {
            response.getWriter().println("Server say:名字:"+name);
            System.out.println("Client say: name="+name);
        }
 
        if(password!=null) {
            response.getWriter().println("Server say:密码:"+password);
            System.out.println("Client say: password="+password);
        }
    }
}

   那么您在此间粘贴的时候路径应该是: “$…../third_party/ios”

 

上边大家大概书写三个Server端(如何创造一个Jetty服务器请看Himi  Jetty
开发体系文章)

OK,一切符合规律;

     
 注意:用剧本新建的工程,默许是不加libcurl的,大家编写翻译到别的平台的时候要修改makefile文件将其添加进去;(具体能够参见tests里面包车型大巴makefile
) 

发表评论

电子邮件地址不会被公开。 必填项已用*标注