go - 读取可接受数据中的特定字节数
问题描述
我有一个二进制数据包,但包的长度是它的前 4 个字节。是否有正确的方法来读取长度,然后在 GoLang 中使用 net.Conn 读取整个包?
解决方案
尝试使用这个:
包主
导入(“编码/二进制”“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
}
推荐阅读
- javascript - TypeError:分配给常量变量
- python - 如何获取 Post.user 的数据而不是登录用户
- data-structures - 这种情况会被归类为“不是很密集的图”吗?
- xamarin - 将具有跨度的子项添加到 C# 中的网格元素时超出范围
- curl - 纳斯达克数据
- python - 如何修复 FileNotFoundError [WinError 2]?
- python - PermissionError: [Errno 13] Permission denied - Python 无法写入/打开/读取任何文本或图像文件
- azure - B1 层应用服务计划可以拥有多少个子域?
- python - 如何在二维数组中使用 scipy 最小化?
- jquery - 如何使用 jquery 隐藏或显示 bootstrap 4 折叠