开果 一个简单 小型的C#Socket网络通信库的制作(服务器客户端互通)(上)

47
回复
1141
查看
打印 上一主题 下一主题
[ 复制链接 ]

11

主题

16

帖子

125

积分

Rank: 9Rank: 9Rank: 9

UID
327626
好友
2
蛮牛币
94
威望
0
注册时间
2019-7-19
在线时间
84 小时
最后登录
2019-8-26

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
本帖最后由 开果 于 2019-8-23 17:49 编辑

大家好我是匠人团队的开果


就一个不用 理解之间的通信代码原理之类的   几句代码快速搭建服务器和客户端的

思维导图:




过程大概是KGSocketClient/KGSocketServe 创建了KGNetSession 会话管理进行发送/接收数据的监听会进行一次开启事件 OnStartRecive() 函数回调, 监听到的数据包KGNetPacket 通过KGPackExtension 转化成KGNetData自已定义的数据结构类,然后在KGNetSession里面的  OnReciveData(T) 函数 进行回调   

下面直接开始代码解析

1.KGNetData  自定义的数据类


这个好像没啥好说的=。= 自定义的数据类都要继承他



[C#] 纯文本查看 复制代码
    //传输的数据都必须打上可序列化的标签
    [Serializable]
      public abstract class KGNetData
        {
            public int Err;
            public int Cmd;
        }
    




2.KGNetPacket 消息包的数据类




因为每条消息包 你不知道他的长度 所以要在前面利用BitConverter.GetBytes获取一个包的长度Int值

这个int就站byte[]四个长度  所以HeadLength=4,然后获取到长度了在SetPackLen给PacketBuff赋值上获取到的长度


[C#] 纯文本查看 复制代码
     public class KGNetPacket
        {
   
            public byte[] PacketBuff;
            public int HeadLength = 4;//这里是标头的长度
            public int HeadIndex;//这里有时候分包接收到一两个 所以要进行记录已经接收到两个了 还差几个
    
            public int PacketBuffLength ;//数据包的长度
            public int PacketIndex;//和上面一样意思
    
            /// <summary>
            /// 获取四个字节转成的int长度
            /// </summary>
            /// <param name="data"></param>
            /// <returns></returns>
            public  void SetPackLen()
            {
                PacketBuffLength = BitConverter.ToInt32(PacketBuff, 0);
                PacketBuff =new byte[PacketBuffLength];
            }
    
    
            public void Refresh()
            {
                PacketBuff = null;
                PacketIndex = 0;
                HeadIndex = 0;
            }
        }

3.KGPackExtension 打消息包拓展工具类








4.KGLog 打印消息的 工具类
所有打印都是通过KLog()进行打印的 在别的地方可以在LogEvent就可以获取到打印事件了

[C#] 纯文本查看 复制代码
    /// <summary>
    /// 打印消息的工具拓展类
    /// </summary>
    public static class KGLog
    {
        public static bool RunLog = true;

        //留的一个打印事件委托
        private static  Action<string, LogLevel> LogEvent = null;

        //这里是打印消息的方法
        public static void KLog(this string Logdata,LogLevel logLevel=LogLevel.Common)
        {
            if (!RunLog)
                return;

            LogEvent?.Invoke(Logdata,logLevel);

            Console.WriteLine("{0}-----------------{1}", Logdata,logLevel.ToString());
         

        }

        public static void SetLog(this Action<string, LogLevel> log,bool Run=true)
        {
            LogEvent = log;
            RunLog = Run;
        }
    }

    //打印等级
    public enum  LogLevel
    {
        None=0,
        Common=1,
        Warn=2,
        Err=3

    }


好了我们下篇继续

工程地址
游客,如果您要查看本帖隐藏内容请回复




޳萌新QQ群844087555 欢迎进来灌水=。=



7日久生情
2997/5000
排名
361
昨日变化

0

主题

121

帖子

2997

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
63538
好友
1
蛮牛币
3851
威望
0
注册时间
2014-12-25
在线时间
1124 小时
最后登录
2019-8-16
沙发
2019-7-30 10:04:30 只看该作者
666666666666666666
7日久生情
4127/5000
排名
184
昨日变化

0

主题

684

帖子

4127

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
35380
好友
2
蛮牛币
2593
威望
0
注册时间
2014-7-20
在线时间
1227 小时
最后登录
2019-8-26
QQ
板凳
2019-7-30 12:14:11 只看该作者
udsdajkfhkj
3偶尔光临
250/300
排名
11231
昨日变化

1

主题

44

帖子

250

积分

Rank: 3Rank: 3Rank: 3

UID
311288
好友
1
蛮牛币
843
威望
0
注册时间
2019-1-9
在线时间
115 小时
最后登录
2019-8-24
地板
2019-7-30 13:53:34 只看该作者
不错不错
3偶尔光临
283/300
排名
11818
昨日变化

4

主题

41

帖子

283

积分

Rank: 3Rank: 3Rank: 3

UID
151866
好友
0
蛮牛币
125
威望
0
注册时间
2016-6-13
在线时间
156 小时
最后登录
2019-8-23
5#
2019-7-30 16:53:18 只看该作者
感谢楼主
4四处流浪
374/500
排名
10113
昨日变化

5

主题

67

帖子

374

积分

Rank: 4

UID
61899
好友
7
蛮牛币
5
威望
0
注册时间
2014-12-17
在线时间
194 小时
最后登录
2019-8-13
6#
2019-7-30 21:03:23 只看该作者
学习了,谢谢分享

0

主题

10

帖子

16

积分

Rank: 1

UID
282778
好友
0
蛮牛币
40
威望
0
注册时间
2018-5-25
在线时间
6 小时
最后登录
2019-8-5
7#
2019-7-31 09:47:07 只看该作者

学习了,谢谢分享
7日久生情
4076/5000
排名
142
昨日变化

0

主题

377

帖子

4076

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
2484
好友
2
蛮牛币
4152
威望
0
注册时间
2013-8-23
在线时间
1361 小时
最后登录
2019-8-26
8#
2019-7-31 10:38:30 只看该作者
看着很不错啊
5熟悉之中
710/1000
排名
3675
昨日变化

0

主题

6

帖子

710

积分

Rank: 5Rank: 5

UID
274529
好友
0
蛮牛币
5824
威望
0
注册时间
2018-3-28
在线时间
296 小时
最后登录
2019-8-26
9#
2019-7-31 16:19:46 只看该作者
666666学习一下
5熟悉之中
959/1000
排名
5175
昨日变化

1

主题

317

帖子

959

积分

Rank: 5Rank: 5

UID
258102
好友
1
蛮牛币
1367
威望
0
注册时间
2017-12-6
在线时间
363 小时
最后登录
2019-8-23
10#
2019-7-31 17:27:15 只看该作者
学习到了,感谢分享
5熟悉之中
935/1000
排名
2760
昨日变化

0

主题

132

帖子

935

积分

Rank: 5Rank: 5

UID
8578
好友
0
蛮牛币
1560
威望
0
注册时间
2013-11-20
在线时间
275 小时
最后登录
2019-8-25
11#
2019-7-31 20:25:08 只看该作者
感谢分享~~
7日久生情
2390/5000
排名
479
昨日变化

2

主题

97

帖子

2390

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
69739
好友
0
蛮牛币
3056
威望
0
注册时间
2015-1-20
在线时间
749 小时
最后登录
2019-8-2
12#
2019-8-1 09:00:41 只看该作者
学习学习
7日久生情
4309/5000
排名
86
昨日变化

1

主题

452

帖子

4309

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
28000
好友
0
蛮牛币
3961
威望
0
注册时间
2014-6-4
在线时间
1210 小时
最后登录
2019-8-26
13#
2019-8-1 10:18:13 只看该作者
谢谢~~~~~~~~~~~~~

0

主题

1

帖子

3

积分

Rank: 1

UID
257421
好友
0
蛮牛币
13
威望
0
注册时间
2017-12-2
在线时间
2 小时
最后登录
2019-8-1
14#
2019-8-1 15:11:11 只看该作者
这就是大佬了吧
5熟悉之中
739/1000
排名
6128
昨日变化

0

主题

86

帖子

739

积分

Rank: 5Rank: 5

UID
24766
好友
0
蛮牛币
144
威望
0
注册时间
2014-5-12
在线时间
429 小时
最后登录
2019-8-26
15#
2019-8-1 15:22:54 只看该作者
不错不错
您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则