读取可接受数据中的特定字节数

时间:2018-06-27 06:36:57

标签: go networking tcp

我有一个二进制数据包,但是数据包的长度是它的前4个字节。是否有正确的方法可以读取长度,然后在GoLang中使用net.Conn读取整个程序包?

1 个答案:

答案 0 :(得分:0)

尝试使用此:

软件包主要

导入(     “编码/二进制”     “ io” )

func ReadPacket(r io.Reader) ([]byte, error) {
    lenB := make([]byte, 4)

    if _, err := r.Read(lenB); err != nil {
        return nil, err
    }

    //you can use BigEndian depending on the proto
    l := binary.LittleEndian.Uint32(lenB)

    packet := make([]byte, l)

    _, err := r.Read(packet)

    return packet, err
}