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

golang 解析来自套接字的分块 HTTP 响应 - 逐块读取

golang 解析来自套接字的分块 HTTP 响应 - 逐块读取

Go
猛跑小猪 2023-08-07 18:52:18
我的邮件目标是从连接到 HTTP 服务器的 TCP 套接字读取数据,并逐块解析 HTTP 响应(传输编码:分块) - 服务器在同一连接上每 30 秒发送一个块我附上了我的代码。看起来 io.Copy 读取了第一个块,然后在返回之前等待下一个块,所以它阻止了我。如何在块到达时读取它们,而无需等待下一个块?func readHttpChunk(server net.conn) {    buf := bufio.NewReader(server)    for {        resp, err := http.ReadResponse(buf, nil)        b := new(bytes.Buffer)        io.Copy(b, resp.Body)        fmt.Printf("Got me a chunk!")    }}
查看完整描述

1 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

而不是使用io.Copyuse resp.Body.Read(buf)wherebuf是分配的字节片。使用足够大的缓冲区,以免块被截断。读取应该充满buf一个块。



查看完整回答
反对 回复 2023-08-07
  • 1 回答
  • 0 关注
  • 123 浏览
慕课专栏
更多

添加回答

举报

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