我试图从连接中读取信息流。我还没有编写服务器的一部分,也无法修改协议(否则我会让协议变得更友好)
我试图在Go中编写一个服务,在循环中将任意数量的字节读入缓冲区并将其传递给另一个处理程序(我也无法修改此部分)
这是我当前的设置
buf := make([]byte, 256)
for {
n, err := conn.Read(buf)
fmt.Println(string(buf))
if err != nil || n== 0 {
return
}
Handle(buf[:n])
}
当有足够的字节要读取时,这可以正常工作......但是,在流的末尾,没有256字节是可读的。有没有办法在Read()正常返回时保留我的256字节缓冲区?
答案 0 :(得分:3)
如果您想阅读可以使用的整个连接流:
var b bytes.Buffer
if _, err:= io.Copy(&b, conn); err != nil {
return err
}
Handle(b.Bytes())