HttpServer::bind
获取(一堆)套接字地址,解析它们,打开相应的连接,然后监听。
HttpServer::listen
只是听。
rustdoc 在大多数函数旁边都有一个
source
链接,因此您实际上可以 浏览代码到 bind
,而且非常简单:
pub fn bind<A: net::ToSocketAddrs>(mut self, addrs: A) -> io::Result<Self> {
let sockets = self.bind2(addrs)?;
for lst in sockets {
self = self.listen(lst)?;
}
Ok(self)
}
有一个实际的区别,在《Rust 从零到生产》一书中进行了介绍,第 40 页。当你想要绑定到端口 0 时,它将调用从
bind
更改为 listen
,这是 Linux 的说法您想绑定到随机端口。使用 listen
,应用程序可以告诉您它实际接收到的端口。