gpt4 book ai didi

networking - 阻止网络服务器接受进一步的连接

转载 作者:行者123 更新时间:2023-11-29 08:21:42 25 4
gpt4 key购买 nike

目前我这样做是为了阻止服务器根据外部请求接受进一步的连接(例如,客户端发送“关闭”消息):

let listener = try_err!(TcpListener::bind(addr), "cannot bind: {}");

let (tstreams, rstreams) = channel();
let (tshutdown, rshutdown) = channel();
spawn(proc() {
let mut acceptor = try_err!(listener.listen(), "cannot listen: {}");

loop {
acceptor.set_timeout(Some(100));
match acceptor.accept() {
Ok(stream) => tstreams.send(stream),
Err(ref e) if e.kind == TimedOut => {}
Err(e) => println!("Failed to accept: {}", e)
}
match rshutdown.try_recv() {
Ok(()) | Err(Disconnected) => break,
Err(Empty) => {}
}
}
});

然后我可以通过 rstreams channel 接收传入连接,并能够通过 tshutdown channel 关闭接受器循环。

但是,我不喜欢这种方法,尤其是任意的 Some(100) 超时,这在这里似乎是不可避免的。有没有可能做比这更好的事情?

最佳答案

在整个“how to do async properly?”之前,我没有看到更好的方法来实现它' 问题解决了。

关于networking - 阻止网络服务器接受进一步的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23406321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com