pub mod util{
use std::net::Ipv4Addr;
use pnet::datalink::{interfaces,NetworkInterface};
use pnet::ipnetwork::IpNetwork;
pub fn get_local_ip()->Option<(Ipv4Addr,NetworkInterface)>{
let result = interfaces()
.into_iter()
.find(|interface| interface.name == "en0");
// 該当するインターフェースがないときはエラー
if result.is_none() {
return None;
}
let interface = result.unwrap();
// ローカルIPをインターフェースより特定
for ip in &interface.ips {
if let IpNetwork::V4(v4) = ip {
return Some((v4.ip(),interface));
}
}
return None;
}
}