1

我正在 mio 之上构建一个多线程异步 HTTP 服务器。

我应该如何处理客户端TcpStream连接上的事件?

  • 因为is_readable它非常简单:我阅读请求并编写响应。
  • 对于其他类型我不确定。shutdown()如果我得到is_error或,我应该流is_hup吗?怎么样is_none()
4

1 回答 1

1

您提到的所有内容都具有非常精确的含义,并直接映射到 POSIX/BSD Socket API。由您决定。

is_hupon Read 表示对方挂断了它的发送方。这意味着它不会再向您发送任何内容。但是,它可能保持读取打开,您可能仍想向它发送一些数据。

shutdown关闭 Reading/Writing/Both https://doc.rust-lang.org/std/net/enum.Shutdown.html,所以你想做什么和什么时候做取决于你。

TcpStream内部保持FileDescclosefd你放下它时,如果你不shutdown手动,一切都会被关闭,只要你TcpStream从使用中删除给定。https://github.com/rust-lang/rust/blob/master/src/libstd/sys/unix/fd.rs#L217

于 2016-10-26T21:06:15.413 回答