Метод set_nonblocking
Метод set_nonblocking класса TcpStream
управляет режимом работы сокета. Если передать
true, сокет переводится в неблокирующий режим,
при котором операции чтения и записи не приостанавливают
выполнение потока, а сразу возвращают результат. Если
передать false, сокет возвращается в обычный
блокирующий режим. Параметром метод принимает
логическое значение bool, указывающее нужный режим.
Метод возвращает Result с типом
в случае успеха или ошибку ввода-вывода.
Синтаксис
tcp_stream.set_nonblocking(nonblocking)
Пример
Давайте создадим соединение с сервером и переведём сокет в неблокирующий режим:
use std::net::TcpStream;
fn main()
{
let stream = TcpStream::connect("127.0.0.1:8080");
match stream {
Ok(stream) => {
let res = stream.set_nonblocking(true);
println!("{:?}", res);
},
Err(e) => {
println!("Connection failed: {}", e);
}
}
}
Результат выполнения кода:
Ok(())
Пример
Давайте вернём сокет в блокирующий режим, передав
false:
use std::net::TcpStream;
fn main()
{
let stream = TcpStream::connect("127.0.0.1:8080");
match stream {
Ok(stream) => {
stream.set_nonblocking(true).unwrap();
let res = stream.set_nonblocking(false);
println!("{:?}", res);
},
Err(e) => {
println!("Connection failed: {}", e);
}
}
}
Результат выполнения кода:
Ok(())
Смотрите также
-
класс
TcpStream,
который представляет TCP-соединение -
метод
set_read_timeout,
который задаёт таймаут для операций чтения -
метод
set_write_timeout,
который задаёт таймаут для операций записи -
метод
set_nodelay,
который управляет алгоритмом Нейгла