import java.util.*;
import java.io.*;


/** Der Pinger pingt einen bestimmten Server alle "pingEvery_Minutes" (gemäss Uhrzeit) an.
 *  Jede Minute startet ein neuer Testlauf, ob's schon soweit ist.
 * @version geschrieben am 25. September 2000
 */


class Pinger{
    protected final String address = "nngs.cosmic.org";
    //jede Minute neuer Durchlauf
    protected final int timeToWait        = 60000;
    protected final int pingEvery_Minutes = 10;

    public Pinger(){
        Calendar cal = Calendar.getInstance();
        
        cal.setTime (new java.util.Date ());
        ping( cal.getTime().toString() );
        
        while( true ){
            try{
                Thread.sleep( timeToWait );
            }catch( InterruptedException e ){}

            cal.setTime (new java.util.Date ());
            int min  = cal.get (Calendar.MINUTE);

            if( min % pingEvery_Minutes == 0 ){                 
                ping( cal.getTime().toString() );
            }            
        }
    }
    

    protected void ping( String time ){    
        try{
            Process p = Runtime.getRuntime().exec( "ping " + address );     
            
            // ohne diese lese-aktion scheint das ding irgendwie zu blockieren.
            /*
            BufferedInputStream buf = new BufferedInputStream( p.getInputStream() );
            byte[] b = new byte[ 200 ];
            buf.read( b );
            //System.out.println( new String( b ) );
            

            if( p.waitFor() == 0 ){
                System.out.println( "gepingt um: " + time );
            }
            */
            System.out.println( "gepingt um: " + time );
        }catch( IOException e ){
            System.out.println( "error executing ping" );
        }/*catch( InterruptedException esp ){
            System.out.println( "interrupted" );
        }
        */
    }

    public static void main( String[] args ){
        new Pinger();
    }
}
