internet_util/
ip_util.rs

1use std::process::Command;
2
3use regex::Regex;
4
5pub fn check_ip(ip: String) -> f64 {
6    let output = Command::new("cmd").arg("/c").arg(format!("ping -n 3 -w 3 {}", ip)).output().expect("执行ping命令失败");
7    let out = String::from_utf8_lossy(&output.stdout);
8    
9    let lose_time = Regex::new(r"Lost = (\d+)").unwrap();
10    let waste_time = Regex::new(r"Average = (\d+)").unwrap();
11
12    let mut lose:f64 = 3.0;
13    if let Some(cap) = lose_time.captures(&out) {
14        lose = (cap.get(1).unwrap().as_str()).parse::<f64>().unwrap();
15    }
16    if lose > 2.0 {
17        1000.0
18    } else {
19        if let Some(cap) = waste_time.captures(&out) {
20            let average_time = (cap.get(1).unwrap().as_str()).parse::<f64>().unwrap();
21            average_time
22        } else {
23            1000.0
24        }
25    }
26}