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