我有一个 `tokio_core::net::TcpListener` 对象,我创建了它并调用了 `incoming` 方法去获取一个传入连接的流。然后,我使用该流上的 `for_each` 方法将其转换为一个 future,并在事件循环中运行该 future。一旦我这样做了,是否有任何方法可以稍后取消对该端口的绑定?
如果没有,则是否有其他 Tokio API 可以用于创建可关闭的 TCP 服务器?
如果没有,则是否有其他 Tokio API 可以用于创建可关闭的 TCP 服务器?
TcpListener
/ for_each
返回的Future
。Future
实现。然后,您的结构的Future :: poll
实现会poll
所有包含的Future
状态,并在要提前退出时返回Async :: Ready
。如果将包含的Future
包装在oneshot :: spawn
中以在它们自己的任务中运行,则可能有助于性能。Arc<AtomicBool>
)标志来过滤incoming
流,以确定是否继续使用Stream :: take_while
监听for_each
处理程序结束时检查是否继续侦听,否则返回错误(停止for_each
循环)TcpListener
/for_each
future来停止监听,因为它本身永远不会完成,所以使用select()
将其与您控制的另一个future(例如oneshot::Receiver<()>
)组合即可。如果侦听器完成(永远不会),或者单向接收器接收到值(您可以通过将某些内容发送到另一端来触发),则返回的future将完成。Sender
和多个Receiver<()>
的watch
channel。
TcpListener
/for_each
返回的Future
传递给core.run(future)
,那么如何放弃它们呢? :-/ - Nawaz