default_net/interface/
shared.rs

1use std::net::{IpAddr, UdpSocket};
2
3/// Get IP address of the default Network Interface
4pub fn get_local_ipaddr() -> Option<IpAddr> {
5    let socket = match UdpSocket::bind("0.0.0.0:0") {
6        Ok(s) => s,
7        Err(_) => return None,
8    };
9
10    match socket.connect("1.1.1.1:80") {
11        Ok(()) => (),
12        Err(_) => return None,
13    };
14
15    match socket.local_addr() {
16        Ok(addr) => return Some(addr.ip()),
17        Err(_) => return None,
18    };
19}