1
0
mirror of https://github.com/Mrs4s/MiraiGo.git synced 2025-05-05 03:23:50 +08:00
2022-02-25 21:21:21 +08:00

34 lines
673 B
Go

package network
import (
"encoding/binary"
"net"
)
var etx = []byte{0x29}
// HeadBodyFrame 包格式
// * STX
// * head length
// * body length
// * head data
// * body data
// * ETX
// 节省内存, 可被go runtime优化为writev操作
func HeadBodyFrame(head []byte, body []byte) net.Buffers {
buffers := make(net.Buffers, 4)
// buffer0 format:
// * STX
// * head length
// * body length
buffer0 := make([]byte, 9)
buffer0[0] = 0x28
binary.BigEndian.PutUint32(buffer0[1:], uint32(len(head)))
binary.BigEndian.PutUint32(buffer0[5:], uint32(len(body)))
buffers[0] = buffer0
buffers[1] = head
buffers[2] = body
buffers[3] = etx
return buffers
}