为什么使用Tcplistener传入迭代器时for循环不退出

tteo57

看防锈圣经,有以下代码:

use std::net::TcpListener;

fn main() {
    let listener = TcpListener::bind("127.0.0.1:7878").unwrap();

    for stream in listener.incoming() {
        let stream = stream.unwrap();

        println!("Connection established!");
    }
}

我想知道为什么for循环不会退出。在for循环的一次迭代之后(即,如果没有人连接),for循环是否应该结束并退出主函数?

姆德雷科

这是有意的。TcpListener有关incoming()注意事项的文档中

返回的迭代器将永远不会返回None,也不会产生同位体的SocketAddr结构。对其进行迭代等效accept于循环调用

accept()注意:

该函数将阻塞调用线程,直到建立新的TCP连接为止。

因此,它被设计为无限等待连接,直到一个连接才产生执行。


如果没有挂起的连接,您可以通过调用listener.set_nonblocking(true)accept(并因此使incoming迭代器)立即屈服并产生错误来更改此行为io::ErrorKind::WouldBlock

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么当条件= false时while循环不退出

来自分类Dev

为什么当条件= false时while循环不退出

来自分类Dev

为什么这个循环不退出

来自分类Dev

为什么红宝石循环不退出

来自分类Dev

为什么我的 if/else 不退出循环?

来自分类Dev

当管道终止到子命令时,为什么bash while循环不退出?

来自分类Dev

为什么在输入$后不退出while循环

来自分类Dev

为什么服务器程序不退出?

来自分类Dev

为什么(退出1)不退出脚本?

来自分类Dev

为什么异常不退出程序?

来自分类Dev

困惑为什么脚本不退出

来自分类Dev

为什么CTRL + C不退出vim?

来自分类Dev

循环不退出

来自分类Dev

为什么进程不退出以及如何使其退出

来自分类Dev

当主机关闭时,为什么scala swing app不退出?

来自分类Dev

当我在android中按回时为什么不退出该应用程序?

来自分类Dev

为什么返回next(err)时,猫鼬查询中的catch()块不退出功能?

来自分类Dev

当我在android中按回时为什么不退出该应用程序?

来自分类Dev

为什么此迭代器无限循环?

来自分类Dev

Univocity:使用CsvRoutines迭代bean时,为什么不能使用迭代器删除功能?

来自分类Dev

为什么此bash脚本不退出?

来自分类Dev

为什么输入“ q”后我的程序不退出?

来自分类Dev

当我使用-1退出循环时,为什么会得到ArrayIndexOutOfBounds?

来自分类Dev

ConcurrentModificationException使用迭代器循环时

来自分类Dev

python while循环不退出

来自分类Dev

列表不退出循环吗?

来自分类Dev

python while循环不退出

来自分类Dev

输入'\ n'时为什么退出包含getchar()的循环?

来自分类Dev

为什么我可以在Python for循环中为迭代器和序列使用相同的名称?

Related 相关文章

热门标签

归档