为了账号安全,请及时绑定邮箱和手机立即绑定

读取 net.Conn 缓冲区的第一个 UVarInt

读取 net.Conn 缓冲区的第一个 UVarInt

Go
MMTTMM 2021-12-20 14:37:15
我net.Conn通过侦听端口建立了 TCP 数据包连接 ( )。conn, err := ln.Accept()我需要读取第一UVarInt所述的Conn.Read([]byte)缓冲器,其开始于索引0。以前,我只需要第一个字节,这很容易使用packetSize := make([]byte, 1)conn.Read(packetSize)// Do stuff with packetSize[0]但是,如前所述,我需要使用 net.Conn.Read() 方法获取我可以访问的第一个 UVarInt。请记住,UVarInt 几乎可以有任何长度,我无法确定(客户端不发送 UVarInt 的大小)。然而,我知道 UVarInt 在缓冲区的最开始处开始。
查看完整描述

1 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

bufio.Reader包装连接:

br := bufio.NewReader(conn)

使用二进制包通过 bufio.Reader读取未签名的 varint:

n, err := binary. ReadUvarInt(br)

因为 bufio.Reader 比 varint 可以缓冲更多,所以您应该使用 bufio.Reader 进行连接上的所有后续读取。


查看完整回答
反对 回复 2021-12-20
  • 1 回答
  • 0 关注
  • 157 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信