如何取消循环外部的侦听循环中的TCPListener?

问题描述 投票:1回答:1

我有一个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();
    }
}

如何在一段时间(超时)后打破循环?

超时过后,我需要监听循环停止:

  • 如果没有传入的流(即如果没有流传入并且将来可能不再存在,那么我需要服务器停止等待)
  • 如果在那一刻已经有一个传入,则在处理完最后一个流之后
multithreading tcp rust tcpserver cancellation
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.