Как отменить TCPListener, который находится в цикле прослушивания вне цикла? - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть TCP-сервер, прослушивающий запросы в бесконечном цикле:

use std::io::prelude::*;
use std::net::TcpStream;
use std::net::TcpListener;

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

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

        let response = "HTTP/1.1 200 OK\r\n\r\nsdfuhgsjdfghsdfjk";
        stream.write(response.as_bytes()).unwrap();
        stream.flush().unwrap();
    }
}

Как я могу разорвать цикл после определенного периода времени (тайм-аута)?

По истечении времени ожиданияМне нужно, чтобы цикл прослушивания был остановлен:

  • в тот момент, если нет входящего потока (то есть, если нет входящих потоков и их может не быть в будущем, мне нужен серверперестать ждать напрасно)
  • после обработки одного последнего потока, если в этот момент уже есть один входящий
...