gxh1968 发表于 2018-9-20 10:43:48

golang 自定义封包协议(转的)

package protocol  

  
import (
  

"bytes"  
"encoding/binary"
  
)
  

  
const (
  
ConstHeader         = "jackluo"
  
ConstHeaderLength   = 7
  
ConstSaveDataLength = 4
  
)
  

  
//封包
  
func Packet(message []byte) []byte {
  
return append(append([]byte(ConstHeader), IntToBytes(len(message))...), message...)
  
}
  

  
//解包
  
func Unpack(buffer []byte, readerChannel chan []byte) []byte {
  
length := len(buffer)
  

  
var i int
  
for i = 0; i < length; i = i + 1 {
  
if length < i+ConstHeaderLength+ConstSaveDataLength {
  
break
  
}
  
if string(buffer) == ConstHeader {
  
messageLength := BytesToInt(buffer)
  
if length < i+ConstHeaderLength+ConstSaveDataLength+messageLength {
  
break
  
}
  
data := buffer
  
readerChannel
页: [1]
查看完整版本: golang 自定义封包协议(转的)