【发布时间】:2014-07-18 04:58:34
【问题描述】:
我正在尝试从连接中读取信息流。我还没有编写它的服务器部分,也无权修改协议(否则我会让协议更友好)
我正在尝试在 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 字节缓冲区?
【问题讨论】:
-
我不明白。什么是“优雅归来”? Handle 函数是否只占用 256 个长度字节?
-
您没有正确处理
EOF- 请参阅io.Reader 文档 - 可以使用n != 0返回EOF。不确定这是否是您的问题!
标签: go