Update ch20-01-single-threaded.md

pull/789/head
kwkw 5 months ago
parent 3b2fea1b96
commit 60999cadbf

@ -73,7 +73,7 @@ Connection established!
我们创建了一个 `http_request` 变量来收集浏览器发送给服务端的请求行。这里增加了 `Vec<_>` 类型注解表明希望将这些行收集到一个 vector 中。 我们创建了一个 `http_request` 变量来收集浏览器发送给服务端的请求行。这里增加了 `Vec<_>` 类型注解表明希望将这些行收集到一个 vector 中。
`BufReader` 实现了 `std::io::BufRead` trait它提供了 `lines` 方法。`lines` 方法通过遇到换行符newline字节就切分数据流的方式返回一个 `Result<String,std::io::Error>` 的迭代器。为了获取每一个 `String`,通过 map 并 `unwrap` 每一个 `Result`。如果数据不是有效的 UTF-8 编码或者读取流遇到问题时,`Result` 可能是一个错误。一如既往生产环境的程序应该更优雅地处理这些错误,不过出于简单的目的我们选择在错误情况下停止程序。 `BufReader` 实现了 `std::io::BufRead` trait它提供了 `lines` 方法。`lines` 方法通过遇到换行符newline字节就切分数据流的方式返回一个 `Result<String, std::io::Error>` 的迭代器。为了获取每一个 `String`,通过 map 并 `unwrap` 每一个 `Result`。如果数据不是有效的 UTF-8 编码或者读取流遇到问题时,`Result` 可能是一个错误。一如既往生产环境的程序应该更优雅地处理这些错误,不过出于简单的目的我们选择在错误情况下停止程序。
浏览器通过连续发送两个换行符来代表一个 HTTP 请求的结束,所以为了从流中获取一个请求,我们获取行直到它们不为空。一旦将这些行收集进 vector就可以使用友好的 debug 格式化打印它们,以便看看 web 浏览器发送给服务端的指令。 浏览器通过连续发送两个换行符来代表一个 HTTP 请求的结束,所以为了从流中获取一个请求,我们获取行直到它们不为空。一旦将这些行收集进 vector就可以使用友好的 debug 格式化打印它们,以便看看 web 浏览器发送给服务端的指令。

Loading…
Cancel
Save