在Linux上,我打开UDP套接字并将其绑定到当前可用的地址。然后,我循环收听新数据包。然后,我禁用了wifi,接口掉线了,并且从接口中删除了网络地址。我希望接收调用返回错误,但事实并非如此。
这是预期的行为吗?当套接字绑定到的地址消失时,是否有办法从接收调用中接收错误?
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)
}
}
}