Парсер результатов Ping

 
 
 
Сообщения:27
Здравствуйте ! Пришлось мне работать с библиотекой для пинга(если кому интересно то вот ссылка на сайт библиотеки http://www.icmp4j.org). Возникла задача спарсить результаты выполнения, то есть строку вида:
"Reply from 178.208.80.137: bytes=32 time=87ms TTL=56". Принцип работы довольно прост, создаем объект и с помощью функции-сеттера задаем ту самую строку которую нужно спаpсить

PingResultParser prp = new PingResultParser();
prp.setPingResult("Reply from 178.208.80.137: bytes=32 time=87ms TTL=56");


Получаем результаты с помощь банального System.out.println();
System.out.println("Host = " + prp.getHost() + "  Bytes = " + Integer.parseInt(prp.getBytes())+
            "  Time = " + Integer.parseInt(prp.getTime()) + "  TTL = " + Integer.parseInt(prp.getTTL()));


Код парсера:

package icmp4j;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

class PingResultParser{
    
    private String ping_result_to_parse = "";
    
    private String bytes_time_ttl_val;
   
    final private String bytes_val_reg_exp_1 = "bytes=(.*?)([\\s]){1}";
    final private String time_val_reg_exp_2 = "time=(.*?)([a-z]){2}";
    final private String ttl_val_reg_exp_3 = "TTL=(.*?)($)";
    final private String host_name_val_reg_exp_4 = "from[\\s]{1,}(.*?)[:]{1,}";
    
   private void ping_parser(int i){
    
        String result_value = "";
        String parse_ping_pattern = "";
    
    switch(i){
        case 1:
           parse_ping_pattern=bytes_val_reg_exp_1;
           break;
        case 2:
           parse_ping_pattern=time_val_reg_exp_2;
           break;
        case 3:
           parse_ping_pattern=ttl_val_reg_exp_3;
           break;
        case 4:
           parse_ping_pattern=host_name_val_reg_exp_4;
           break;
        default:
           System.out.println("WRONG VALUE.");
           break;
    }
    
    Matcher matcher = Pattern.compile(parse_ping_pattern).matcher(ping_result_to_parse);
        while(matcher.find()){
            result_value= matcher.group(1);
            }
        this.bytes_time_ttl_val = result_value;
    }
    
   String getBytes(){
        ping_parser(1);
        return this.bytes_time_ttl_val;
    }
   
   String getTime(){
        ping_parser(2);
        return this.bytes_time_ttl_val;
   }
   
    String getTTL(){
        ping_parser(3);
        return this.bytes_time_ttl_val;
    }
    
   String getHost(){
      ping_parser(4);
      return this.bytes_time_ttl_val;
   }
    
    void setPingResult(String ping_res){
        this.ping_result_to_parse = ping_res.trim();
    }
 }
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет