Это предназначено. Из документации для TcpListener
относительно incoming()
примечания:
Возвращенный итератор никогда не вернет None
и также не даст структуру равноправного SocketAddr
. Повторение по нему эквивалентно вызову accept
в al oop.
И accept()
примечания:
Эта функция будет блокировать вызывающий поток до нового TCP-соединение установлено.
Таким образом, оно предназначено для бесконечного ожидания соединений и не приводит к выполнению до тех пор, пока оно не будет сделано.
Вы можете изменить это поведение, вызвав listener.set_nonblocking(true)
иметь accept
(и, следовательно, итератор incoming
) для немедленного выдачи с ошибкой io::ErrorKind::WouldBlock
, если нет ожидающих соединений.