我正在尝试使用以下代码连接到无法访问的服务器:
println!("Connecting");
TcpStream::connect(s).unwrap();
println!("Connected");
Run Code Online (Sandbox Code Playgroud)
当我运行代码时,它卡在第二行。
输出:
Connecting
Run Code Online (Sandbox Code Playgroud)
小智 11
如果您在 tokio 中使用异步 rust,那么您可以使用以下命令:-
const CONNECTION_TIME: u64 = 100;
...
let (socket, _response) = match tokio::time::timeout(
Duration::from_secs(CONNECTION_TIME),
tokio::net::TcpStream::connect("127.0.0.1:8080")
)
.await
{
Ok(ok) => ok,
Err(e) => panic!(format!("timeout while connecting to server : {}", e)),
}
.expect("Error while connecting to server")
Run Code Online (Sandbox Code Playgroud)
来自 2020 年的问候。
与此同时,答案发生了变化,不再是“不容易做到”,而是:
TcpStream::connect_timeout()
Run Code Online (Sandbox Code Playgroud)
https://doc.rust-lang.org/std/net/struct.TcpStream.html#method.connect_timeout
目前无法更改建立 TCP 连接的超时。网络堆栈有自己的默认设置,这些设置可能因操作系统而异;我相信一分钟是典型的超时。