C#開源網絡通信庫PESocket的使用


PESocket

PESocket開源項目GitHub地址:點擊跳轉

基於C#語言實現的高效便捷網絡庫。支持集成到Unity當中使用。

不用過多了解網絡通信內部原理,只需幾行簡單的代碼,便能簡捷快速開發基於C#語言的服務器和客戶端,實現網絡通信。

使用示意:

1.創建Socket服務器

PESocket<ClientSession, NetMsg> client = new PESocket<ClientSession, NetMsg>();
client.StartAsServer("127.0.0.1", 17666);

2.創建Socket客戶端

PESocket<ClientSession, NetMsg> client = new PESocket<ClientSession, NetMsg>();
client.StartAsClient("127.0.0.1", 17666);

3.網絡消息定義

網絡消息需要繼承自PEMsg類,並打上[Serializable]標簽,便於使用C#語言的序列化功能。消息體支持多層嵌套。

[Serializable]
public class NetMsg : PEMsg {
    public int id;
    public string name;
    public int coin;
}

4.發送網絡消息

使用ClientSession/ServerSession類中的SendMsg(T msg)函數以及重載函數SendMsg(byte[] data)可以分別發送打包好的網絡消息以及完成序列化二進制網絡消息。

NetMsg msg = new NetMsg {
    id = 10086,
    name = "Plane",
    coin = 99999
};

this.SendMsg(msg);

5.接收網絡消息

在自定義的ClientSession/ServerSession類中重寫OnReciveMsg(T msg)可以接收網絡消息。

protected override void OnReciveMsg(NetMsg msg) {
    base.OnReciveMsg(msg);

    //TODO 增加處理網絡消息的業務邏輯
    PETool.LogMsg("Msg_id:" + msg.id);
    PETool.LogMsg("Msg_name:" + msg.name);
    PETool.LogMsg("Msg_coin:" + msg.coin);
}

6.第三方日志工具接口

通過SetLog(bool log = true, Action<string, int> logCB = null)接口,可以傳入第三方的日志顯示工具。(下面以Unity為例,實現在Unity編輯器控制台中輸出日志信息)

skt.SetLog(true, (string msg, int lv) => {
    switch (lv) {
        case 0:
            msg = "Log:" + msg;
            Debug.Log(msg);
            break;
        case 1:
            msg = "Warn:" + msg;
            Debug.LogWarning(msg);
            break;
        case 2:
            msg = "Error:" + msg;
            Debug.LogError(msg);
            break;
        case 3:
            msg = "Info:" + msg;
            Debug.Log(msg);
            break;
    }
});


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM