又拾起了rust語言, 想寫一點東西玩一玩, 但是發現連一個獲取本機IP地址的庫都沒有, 還得輓起袖子自己擼. https://crates.io/crates/local_ipaddress 沒有用ifconfig, 也沒有掃描網卡, 就開了一個UdpSocket嘗試著去連一個IP地址, 然後看本 ...
又拾起了rust語言, 想寫一點東西玩一玩, 但是發現連一個獲取本機IP地址的庫都沒有, 還得輓起袖子自己擼.
https://crates.io/crates/local_ipaddress
沒有用ifconfig, 也沒有掃描網卡, 就開了一個UdpSocket嘗試著去連一個IP地址, 然後看本機IP是啥
1 use std::net::UdpSocket; 2 3 4 pub fn get() -> Option<String> { 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("8.8.8.8:80") { 11 Ok(()) => (), 12 Err(_) => return None, 13 }; 14 15 match socket.local_addr() { 16 Ok(addr) => return Some(addr.ip().to_string()), 17 Err(_) => return None, 18 }; 19 }
這是使用的例子
use local_ipaddress; fn main() { println!("{}", local_ipaddress::get().unwrap()); }
千萬不要去用哪個local-ip, 或者machine ip之類的, 一個是通過ifconfig的返回獲取IP地址的, 一個是掃描網卡, 在windows下都會panic