1. 程式人生 > >Cocos2d-x Tutorial 之 Socket的使用(1)

Cocos2d-x Tutorial 之 Socket的使用(1)

本篇博文記錄下 cocos2-x 中 socket 連結的建立

使用到了第三方跨平臺的 socket 庫 netlink

主頁

下載地址

引擎版本:quick-cocos2d-x 3.3

一、配置環境

  • 1、下載並增加到 Xcode

netlink官網下載netlink的包,解壓縮並將解壓縮後的資料夾放到 Classes 目錄下,在 Xcode 中右鍵 Add Files ,增加 netLink 到專案中,開啟 netLink group 刪除多餘的條目,只留下 include 和 src 即可。

  • 2、配置 SearchPath

開啟專案檔案,選擇 project (如果只需要給某一個 target 增加,選擇相應的 target ),選擇 Build Settings ,選擇 Search Paths ,給 User Header Search Path 增加

    $(SRCROOT)/../Classes/netLink/include
  • 3、編譯專案 注意這時候編譯的時候可能會報一個錯誤,如下圖

解決辦法:

開啟 netLink/include/netlink/core.h, 在末尾加上 #include “unistd.h”

1
2
3
4
#include "netlink/exception.h"
#include "netlink/release_manager.h"
#include "netlink/util.h"
#include "unistd.h"

然後在編譯,以上編譯成功說明環境配置ok

二、編寫 Socket 工具類

Socket工具類就直接貼程式碼加註釋了

SocketUtil.h

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#ifndef __MyLuaGame__SocketUtil__
#define __MyLuaGame__SocketUtil__
#include <iostream>
#include "cocos2d.h"
namespace NL {
    class SocketGroup;
};
class ReceiveDeal;
class DisconnectDeal;
class SocketUtil : public cocos2d::Ref
{
public:
    typedef std::function<void(std::vector<int>)> ccMsgFunc;
    typedef std::function<void(bool)> ccStateFunc;
    //單例
    static SocketUtil* getInstance();
    //建立socket
    bool connectServer(const std::string & strIp, unsigned int nPort);
    //傳送訊息
    bool sendMsg(std::vector<int> & bytes);
    //接收訊息
    void receiveMsg(std::vector<int> & bytes);
    //socket狀態改變事件
    void socketStateChange(bool connected);
    //關閉連結
    void close();
    //增加訊息回撥
    void addMsgHandler(const ccMsgFunc& func);
    //增加狀態回撥
    void addStateHandler(const 
            
           

相關推薦

Cocos2d-x Tutorial Socket的使用1

本篇博文記錄下 cocos2-x 中 socket 連結的建立 使用到了第三方跨平臺的 socket 庫 netlink 主頁 下載地址 引擎版本:quick-cocos2d-x 3.3 一、配置環境 1、下載並增加到 Xcod

cocos2d-x學習——分析AppDelegate和HelloWorldScene檔案

這裡我們來看一下cocos自動給我們生成的工程裡有些什麼東西,並且分析一下這些程式碼的用途,來為我們以後編寫cocos程式鋪下基礎。 這裡我建議看我這份隨筆的看官先看看cocos官網的快速入門手冊,不然可能會比較迷糊(因為待會要分析一些程式碼,如果以前沒見過的話會比較昏)。傳送門在這裡 其中一些基本不需要程式

初窺Cocos2d-x記憶體管理機制1

Cocos2d-x版本:cocos2d-2.1rc0-x-2.1.3 windows下測試。 VS版本:VS2010. .在Cocos2d記憶體管理中使用的引用計數機制,每個物件都包含一個用來控制生命週期的引用計數器,它就是CCObject的成員變數m_uReference

5.27:cocos2d-x初探學習筆記2--重要概念及Test樣例結構(轉)

這樣的 發生 菜單 add css 基礎 dsm 人的 添加 1.幾個重要概念 在cocos2d引擎中,有幾個概念,各自是導演。場景,布景和人物角色。 導演(CCDirector):在cocos2d-x引擎中,導演類是遊戲的組織者和領導者。導演制定規則讓遊戲內的場

巧婦能為少米1——Android下小內存下的生存

直接內存 -a 響應時間 分區 popu 身邊 執行 人的 算法 常常聽到身邊用安卓的朋友抱怨手機卡頓,內存動不動就快沒了。而Google聲稱在512M的內存下也能流暢執行Android 4.4。究竟它做了什麽? 總結一下它主要做了四件事: 1.優化內核,使用Activ

前端基於react,後端基於.net core2.0的開發1 介紹

tco ioc logs asp webpack 路由 src 部署 關鍵字 文章提綱目錄 1.前端基於react,後端基於.net core2.0的開發之路(1) 介紹 2.前端基於react,後端基於.net core2.0的開發之路(2) 開發環境的配置,

自動化運維工Ansible1

連接 blog mir spa yum源 多節點 功能 軟件 重復執行 1.1 ansible簡介 1.1.1 、Ansible軟件介紹: Ansible提供一種最簡單的方式用於發布、管理和編排計算機系統的工具,可在數分鐘內搞定。Ansible由Python語言開發, 默認

FPGA小白學習1 System Verilog的概念以及與verilog的對比

函數返回 enable 傳遞 轉換操作符 st2 輸出 時間值 擴展 isa 轉自CSDN:http://blog.csdn.net/gtatcs/article/details/8970489 SystemVerilog語言簡介 SystemVerilog是一種硬件描

STL源碼剖析allocator1

bsp 初始 參數 使用 分配 最大 bin 初始化 pre 空間配置器(allocator)這個概念在閱讀源碼之前我根本沒有聽過,原以為內存分配都是使用new和delete運算符(註意和operator new、placement new、operator delete以

學習Linux程序設計1UNIX程序設計哲學

文件 系統 領域 mil 自己 編程 代碼 復雜 容易 UNIX程序編程有自己特定的風格,我們在學習UNIX程序設計的時候,應該盡量遵從這種設計風格,它能夠最大限度地幫助我們避免一些問題。簡單化 許多有用並且好用的UNIX系統軟件都非常簡單,而且很小並易於理解。

spark成長1spark究竟是什麽?

engine nosql 之路 每天 畢業 hat 數據查詢 -a 並行計算 今年6月畢業,來到公司前前後後各種事情折騰下來,8月中旬才入職。本以為終於可以靜下心來研究技術了,但是又把我分配到了一個幾乎不做技術的解決方案部門,導致現在寫代碼的時間都幾乎沒有了,所以只能在每天

python1數據類型

between pty obj lean 使用字符串 add pass acc 出現次數 目錄 整型 布爾值 字符串 列表 元組 字典 整型(int) 將字符串轉換成整型 num = "123" v = int(num)     2. 將字符串按進制位轉換成整型

前端學習HTML1

HTML標籤學習 2018-10-31 記錄一下學習的網站 http://www.w3school.com.cn http://www.runoob.com/ 1 <!DOCTYPE html> 2 <html> 3 4 <head>

大資料基礎Quartz1簡介、原始碼解析

一簡介 官網 http://www.quartz-scheduler.org/ What is the Quartz Job Scheduling Library? Quartz is a richly featured, open source job scheduling libra

2018年最新JAVA面試題總結基礎1

轉自於:https://zhuanlan.zhihu.com/p/39322967   1、JAVA中能建立volatile陣列嗎?volatile能使得一個非原子操作變成原子操作嗎? 回答: 能,Java 中可以建立 volatile 型別陣列,不過只是一個指向陣列的引用,而不是整個陣列。J

mysql高階1

簡介 鎖從力度上可以分為表鎖、頁鎖、行鎖。表鎖是將整張表鎖了,行鎖是將那一行鎖了。從對資料的操作角度來分,可以分為讀鎖和寫鎖。但是個人覺得,讀鎖和寫鎖是針對表鎖而言的,行鎖好像沒有這個區別。 行鎖: 可以參考我下一篇部落格:https://blog.csdn.net/tues

小李的Java學習1

第一天 java的面向物件思想 小葉:“為什麼要學習Java呢???” 小李:“因為Java比c語言有趣多了。。。。” 小葉:“你剛學完c語言,來說說c語言和Java的異同之處吧。” 小李:“c語言和Java的語法基礎,程式控制語句大體都是一樣的。主要是不同之處:Java和c的程

大資料基礎Kafka1簡介、安裝及使用

http://kafka.apache.org   一 簡介 Kafka® is used for building real-time data pipelines and streaming apps. It is horizontally scalable,&nb

Java基礎Freemarker1模板加載及清空機制

ron date java 自帶 pda 直接 onf 刷新方法 希望 一 freemarker加載模版機制 freemarker中的配置項template_update_delay表明模版的緩存時間,單位是s,超過緩存時間則從磁盤加載最新的模版,具體細節如下: 1)fre

大數據基礎ORC1簡介

ups fields with including seve cor val posit record https://orc.apache.org Optimized Row Columnar (ORC) file 層次結構: file -> stripes