测试网络丢包情况代码

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"));
 }
 }
时间: 2024-10-14 12:21:34

测试网络丢包情况代码的相关文章

使用mtr测试网络丢包率和平均延时的脚本实例

mtr(a network diagnostic tool)是一个神奇的指令,能按要求对路由中所有节点进行批量测试.简单敲一个"mtr qq.com"将会有意外收获! 当需要进行产品级的网络测试时,可在服务器上运行一段时间的mtr测试形成报告.如下脚本: #!/bin/bash# 测试网络丢包率和平均延时,注意变量clr和cdt的赋值,不同版本的mtr对应的字段位置不同# 脚本在CentOS 6.2 Linux 2.6.32-220.el6.x86_64 mtr v0.75 上测试通过

MINA 网络黏包处理代码

本文完整代码,可以浏览: https://github.com/hjj2017/xgame-code_server/blob/master/game_server/src/com/game/gameServer/framework/mina/MsgCumulativeFilter.java 我在网上查阅过的 MINA 黏包处理,一般都是放在 Decoder 中做的.也就是黏包处理和消息解码放在一起做,显得比较混乱不好打理.而以下这段代码,我是把黏包处理放在 Filter 中了.在具体使用时可以这

网络丢包的四大原因和修复方法

网络链接阻塞数据在网络传输过程中会经过很多设备和网络链接,只要其中一个网络链接在数据到达之前已经满负载了,那么数据将会在这里阻塞一段时间.如果说网络设备非常落后,那么网络链接就没有足够的等待空间给新数据,它唯一能做的就是将信息丢弃. 修复方法:A增加阻塞链接的带宽B使用Qos(流量优先级和资源保留控制机制)优先处理实时应用.尽管这种方法并不能缓解网络链接阻塞情况,但是它可以优先处理语音和视频来降低断线的可能性. 设备性能(路由器.防火墙.交换机)在带宽充足的情况下,如果你的路由器.防火墙.交换机

FEC(Forward Error Correction)前向纠错 UDP\RTP 中使用用于改善无线等网络丢包等问题--转

FEC(Forward Error Correction)前向纠错 UDP\RTP 中使用用于改善无线等网络丢包等问题 算法暂不介绍. 思路:FEC ENCODE 增加冗余包,当无线等网络丢包之后,接收端使用冗余包可将丢失的包DECODE出来. 举例:10个包,编码后会增加2个包,共12个包发送到接收端,接收端丢失第5和第9包,仅靠剩下的10个包就可以解出第5和第9包. 结果就是,接收端接收到了完整的10个包,代价仅仅是增加了冗余和cpu编解码的消耗. 参考: 1. RTP抗丢包传输方案 点击打

关于ip_conntrack跟踪连接满导致网络丢包问题的分析

我们的线上web服务器在访问量很大时,就会出现网络连接丢包的问题,通过dmesg命令查看日志,发现如下信息: kernel: ip_conntrack: table full, dropping packet. kernel: printk: 1 messages suppressed. kernel: ip_conntrack: table full, dropping packet. kernel: printk: 2 messages suppressed. kernel: ip_conn

windows RT系统下解决网络丢包问题

windows RT为了保证最高的电池使用时间,电源选项只有节能模式,在节能模式下,无线网卡也处于低功耗状态,导致如果用windows RT系统做网络开发的同仁可能会遇到莫名其妙的丢包现象,要解决此问题,需要将无线网卡调整到高性能模式.但是windows RT系统禁止设置高性能,只能通过其他途径解决. 1.可以在命令行下使用powercfg -setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c命令将系统设置为高性能模式. 2.方法1可以将网卡设置为高性能

网络丢包监控脚本

前段搞了一个根据丢包权重判断是否发送报警通知的一个脚本,相互学习学习: 脚本文件如下: # cat checkUser.sh #!/bin/bash export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin log_time=`date +"%Y-%m-%d-%H-%M-%S"` for i in `cat /root/bin/country.txt | grep -v '^$'

网络丢包自动测试并记录

@echo on setlocal ENABLEDELAYEDEXPANSION set ipadd=10.12.100.212 set stepTime=5 set logFile=d:\pingLog.txt set fval=30 set size=32 :goon ping -n %stepTime% 127.1>nul for /f "tokens=5 delims= " %%a in ('ping -l %size% %ipadd% -n 1^|findstr /c:

网络丢包严重的解决办法

强制10M 全双工