打造一款属于自己的go语言socket框架2分包处理

本文介绍了在Go语言中构建Socket框架时,分包处理的重要性及其实现方法。通过设置包头分割,确保服务端正确解析每个独立的数据包,避免数据混淆。文章详细解析了分包处理的逻辑,并提供了相关代码示例。
摘要由CSDN通过智能技术生成

前言:

上篇文章向大家介绍怎么样用go实现一个最简单的socket服务器,接下来我们会讲到socket编程中最重要的事情–分包处理 已经把所有代码整合了,希望给个星星支持一下 microSocket

分包处理的必要:

为什么我们需要分包处理呢,一个socket的连接就相当于一个水管,数据从里面源源不断的流出来,服务端就像一个水盆一样不断地接收数据并处理。
现在我们来考虑一个这么一个场景 客户端告诉服务端两个请求 ‘aaaaa’ ‘bbbbbb’ 服务端当然就是接收数据啦,可是服务端心情好一下子接收了所有的数据,就相当于是 ’aaaaabbbbbb’,这下好了服务端就把这个当做一个请求来处理了,要是不重要还好,要是第二条协议很重要,就gg了,如果服务端代码不够严谨可能整个逻辑都混乱了。
这个时候我们就需要一般逻辑来把我们服务端接收到的数据分开来确保每一块数据都是单独的一个包,这也就是我为什么说这是socket编程最重要的一个环节了。

分包处理的实现:

  • 设置包头分割
  • 设置标志位尾部分割
    一般分包处理主要有以上两种,我们框架用到的是第一种,废话不多说,上代码
func (this *Msf) connHandle(conn net.Conn, sess *session) {
    defer conn.Close()

    var errs error
    tempBuff := make([]byte, 0)
    readBuff := make([]byte, 14)
    data := make([]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值