【发布时间】:2012-09-18 05:46:14
【问题描述】:
在你建立一个连接之后,你想读取来自连接的字节,你怎么能读取所有的字节呢?根据我的尝试,我可以阅读直到它到达一个分隔符,比如换行符。但是如何获得包括换行符在内的所有内容?我正在尝试在 Go 中创建一个 redis 客户端,并且协议用 \r\n 分隔结果,所以在这种情况下 Buffer.ReadLine 或 Buffer.ReadSlice 没有帮助。
【问题讨论】:
在你建立一个连接之后,你想读取来自连接的字节,你怎么能读取所有的字节呢?根据我的尝试,我可以阅读直到它到达一个分隔符,比如换行符。但是如何获得包括换行符在内的所有内容?我正在尝试在 Go 中创建一个 redis 客户端,并且协议用 \r\n 分隔结果,所以在这种情况下 Buffer.ReadLine 或 Buffer.ReadSlice 没有帮助。
【问题讨论】:
要从 Reader 读取所有字节(例如您的 TCP 连接),您可以使用 ioutil.ReadAll,它会一直读取直到从另一端发送 EOF 或发生错误。
请注意,已经有一些 redis clients 可供使用。
【讨论】:
\r\n 时停止从连接中读取。在批量字符串或 RESP 数组的情况下,继续阅读,直到前缀长度(即类型长度值方案)说停止阅读。我认为这是正确的做法。