Update web-server.md

fix typos
pull/1182/head
iscas-zac 2 years ago committed by GitHub
parent 69fd67d18f
commit d4c55aefcd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -41,7 +41,7 @@ fn main() {
`unwrap` 的使用是因为 `bind` 返回 `Result<T,E>`,毕竟监听是有可能报错的,例如:如果要监听 `80` 端口往往需要管理员权限;监听了同样的端口,等等。
`incoming` 会返回一个迭代器,它每一次迭代都会返回一个新的连接 `steam`(客户端发起web服务器监听接收),因此,接下来要做的就是从 `steam` 中读取数据,然后返回处理后的结果。
`incoming` 会返回一个迭代器,它每一次迭代都会返回一个新的连接 `stream`(客户端发起web服务器监听接收),因此,接下来要做的就是从 `stream` 中读取数据,然后返回处理后的结果。
细心的同学可能会注意到,代码中对 `stream` 还进行了一次 `unwrap` 处理,原因在于我们并不是在迭代一个一个连接,而是在迭代处理一个一个请求建立连接的尝试,而这种尝试可能会失败!例如,操作系统的最大连接数限制。
@ -98,7 +98,7 @@ fn handle_connection(mut stream: TcpStream) {
- 引入 `std::io::prelude``std::io::BufReader` 是引入相应的特征和类型,帮助我们读取和写入数据
- `BufReader` 可以实现缓冲区读取,底层其实是基于 `std::io::Read` 实现
- 可以使用 `lines` 方法来获取一个迭代器,可以对传输的内容流进行按行迭代读取,要使用该方法,必须先引入 `std::io::BufRead`
- 最后使用 `collecto` 消费掉迭代器,最终客户端发来的请求数据被存到 `http_request` 这个动态数组中
- 最后使用 `collect` 消费掉迭代器,最终客户端发来的请求数据被存到 `http_request` 这个动态数组中
大家可能会比较好奇,该如何判断客户端发来的 HTTP 数据是否读取完成,答案就在于客户端会在请求数据的结尾附上两个换行符,当我们检测到某一行字符串为空时,就意味着请求数据已经传输完毕,可以 `collect` 了。

Loading…
Cancel
Save