В Linux я открываю сокет UDP и привязываю его к адресу, который доступен в данный момент.Затем я слушаю в цикле новые пакеты.Затем я отключаю Wi-Fi, интерфейс отключается и сетевой адрес удаляется из интерфейса.Я ожидаю, что вызов приема вернет ошибку, но это не так.
Это ожидаемое поведение?Есть ли способ получить сообщение об ошибке при получении, когда адрес, к которому привязан сокет, исчезает?
Пример кода в Rust:
use std::net::UdpSocket;
fn main() {
let mut socket = UdpSocket::bind("192.168.2.43:64041").expect("Unable to open socket");
loop {
let mut buf = [0u8; 1500];
match socket.recv_from(&mut buf) {
Ok((n, _addr)) => println!("Received {} bytes", n),
Err(err) => println!("Error receiving bytes: {}", err)
}
}
}