tcp server 用于给andriod 客户端定时发送消息
liuxiaolong
2019-06-10 8ae3e4d22345fd96b747124d79a4a9bda63dd694
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package pack
 
import (
    "encoding/binary"
    "fmt"
    "io"
)
 
type Package struct {
    Version [2]int8
    Datalen int64
    Data    []byte
}
 
func (p *Package) String() string {
    return fmt.Sprintf("Version:%d DataLen:%d Data:%s", p.Version, p.Datalen, p.Data)
}
 
func (p *Package) Pack(w io.Writer) {
    binary.Write(w, binary.BigEndian, p.Version)
    binary.Write(w, binary.BigEndian, p.Datalen)
    binary.Write(w, binary.BigEndian, p.Data)
}
 
func (p *Package) Unpack(r io.Reader) {
    binary.Read(r, binary.BigEndian, &p.Version)
    binary.Read(r, binary.BigEndian, &p.Datalen)
    if p.Datalen > 0 {
        p.Data = make([]byte, p.Datalen)
    }
    binary.Read(r, binary.BigEndian, &p.Data)
}
 
func BuildMsg(data []byte) Package {
    var pkg Package
    pkg.Version[0] = 'V'
    pkg.Version[1] = 1
    pkg.Data = data
    pkg.Datalen = int64(len(pkg.Data))
    return pkg
}