项目作者: PlaneZhong

项目描述 :
A C# Network Library.
高级语言: C#
项目地址: git://github.com/PlaneZhong/PESocket.git
创建时间: 2018-10-29T00:08:01Z
项目社区:https://github.com/PlaneZhong/PESocket

开源协议:MIT License

下载


PESocket

基于C#语言实现的高效便捷网络库。支持集成到Unity当中使用。

不用过多了解网络通信内部原理,只需几行简单的代码,便能简捷快速开发基于C#语言的服务器和客户端,实现网络通信。

技术支持QQ:1785275942

使用示意:

1.创建Socket服务器

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

2.创建Socket客户端

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

3.网络消息定义

网络消息需要继承自PEMsg类,并打上[Serializable]标签,便于使用C#语言的序列化功能。消息体支持多层嵌套。

  1. [Serializable]
  2. public class NetMsg : PEMsg {
  3. public int id;
  4. public string name;
  5. public int coin;
  6. }

4.发送网络消息

使用ClientSession/ServerSession类中的SendMsg(T msg)函数以及重载函数SendMsg(byte[] data)可以分别发送打包好的网络消息以及完成序列化二进制网络消息。

  1. NetMsg msg = new NetMsg {
  2. id = 10086,
  3. name = "Plane",
  4. coin = 99999
  5. };
  6. this.SendMsg(msg);

5.接收网络消息

在自定义的ClientSession/ServerSession类中重写OnReciveMsg(T msg)可以接收网络消息。

  1. protected override void OnReciveMsg(NetMsg msg) {
  2. base.OnReciveMsg(msg);
  3. //TODO 增加处理网络消息的业务逻辑
  4. PETool.LogMsg("Msg_id:" + msg.id);
  5. PETool.LogMsg("Msg_name:" + msg.name);
  6. PETool.LogMsg("Msg_coin:" + msg.coin);
  7. }

6.第三方日志工具接口

通过SetLog(bool log = true, Action logCB = null)接口,可以传入第三方的日志显示工具。(下面以Unity为例,实现在Unity编辑器控制台中输出日志信息)

  1. skt.SetLog(true, (string msg, int lv) => {
  2. switch (lv) {
  3. case 0:
  4. msg = "Log:" + msg;
  5. Debug.Log(msg);
  6. break;
  7. case 1:
  8. msg = "Warn:" + msg;
  9. Debug.LogWarning(msg);
  10. break;
  11. case 2:
  12. msg = "Error:" + msg;
  13. Debug.LogError(msg);
  14. break;
  15. case 3:
  16. msg = "Info:" + msg;
  17. Debug.Log(msg);
  18. break;
  19. }
  20. });