我的邮件目标是从连接到HTTP服务器的TCP套接字读取数据,然后解析 HTTP响应块(Transfer-Encoding:块状)-服务器在同一连接上每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!")
}
}
答案 0 :(得分:1)
使用io.Copy
代替使用resp.Body.Read(buf)
,其中buf
是分配的字节片。使用足够大的缓冲区,以免块被截断。读取内容应将buf
填满。