1. 程式人生 > >C#開源網路通訊庫PESocket的使用

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;
    }
});