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

推薦閱讀:

相关文章