import java.io.*;   
import java.net.*;   
import java.util.*;   
   
public class PingClient1 {   
      
    public static void main(String[] args)throws Exception    {   
       if (args.length != 2) { 
            System.out.println("Required arguments: host port");   
           return;   
        }   
        String host = args[0];   
        int port = Integer.parseInt(args[1]);      
   
        DatagramSocket socket = new DatagramSocket();   
        // Timeout für das Socket um unendliches warten zu vermeiden
        socket.setSoTimeout(3000);   
        InetAddress serverAddress = InetAddress.getByName(host);   
        byte[] receiveData = new byte[1024];   
       
        for(int i = 0; i < 10; i++) {   
        	String clientMess = "PING \r\n";   
        	long tstamp1 = System.currentTimeMillis();   
        	byte[] sendData = clientMess.getBytes();   
        	DatagramPacket sendPacket =    
        		new DatagramPacket(sendData,clientMess.length(),serverAddress,port);   
        	socket.send(sendPacket);   

        	DatagramPacket request = new DatagramPacket(new byte[1024], 1024);   
        	try { 
        		socket.receive(request); 
            System.out.println("Packet content: " +  new String( request.getData() ) );
        	  long tstamp2 = System.currentTimeMillis();  
            long rtt = tstamp2 - tstamp1;
        		System.out.println("RTT: " + rtt );

        		}  catch(SocketTimeoutException e) {   
        		System.out.println("Error: recieve timed out");   
        	}   
       }   
    }   
}   
   
