Связанный сокет UDP не закрыт, когда сеть становится недоступной - PullRequest
0 голосов
/ 01 марта 2019

В 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)
        }
    }
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...