您的位置:首页 > 理论基础 > 计算机网络

测试网络丢包情况代码

2015-03-06 15:17 781 查看
import java.io.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class PingIpUtils {

public static boolean isWindowsOS() {
boolean isWindowsOS = false;
String osName = System.getProperty("os.name");
if (osName.toLowerCase().indexOf("windows") > -1) {
isWindowsOS = true;
}
return isWindowsOS;
}
public static String losePackage(String ip){
String situation=pingIp(ip);
if(situation!=null && situation.equals("连接异常")){
return situation;
}else{
if(situation!=null && Integer.parseInt(situation)>=3){
return situation+"%  丢包情况严重!!!";
}else{
return situation+"%  正常!!!";
}
}
}
public static String pingIp(String ip){
String line = null;
String command = "ping -n 100 "+ip;
String command1= "ping -c 100 "+ip;
String lose="";
int index=0;
try
{
Process pro =null;
BufferedReader buf=null;
if(isWindowsOS()){
//windows获取丢包情况
pro=Runtime.getRuntime().exec(command);
buf= new BufferedReader(new InputStreamReader(pro.getInputStream(),"GBK"));
while ((line = buf.readLine()) != null){
if(line.contains("%")){
lose= line.subSequence(line.indexOf("(")+1, line.indexOf("%")).toString();
}
}
}else{
//linux下获取丢包情况
pro=Runtime.getRuntime().exec(command1);
buf= new BufferedReader(new InputStreamReader(pro.getInputStream()));
while ((line = buf.readLine()) != null){
if(line.contains("packet loss")){
Pattern p = Pattern.compile("received");
Matcher m = p.matcher(line);
while(m.find()){
index=m.end();
}
lose= line.subSequence(index+1, line.indexOf("%")).toString().trim();
}
}
}
}catch (Exception ex){
return "连接异常";
}
return lose;
}
public static void main(String[] args) {
System.out.println(pingIp("40.1.32.50"));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: