You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
package verteiltesysteme.socket.timecounter;
import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress;
class UDPTimeCounterClientPing { public static void main(String args[]) throws Exception { String hostname = ""; int udpPort = 36038; BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); byte[] sendData = new byte[1024]; byte[] receiveData = new byte[1024];
// Socket erzeugen
DatagramSocket clientSocket = new DatagramSocket();
// Hostname vom Benutzer anfragen auf dem der Server l�uft
System.out.println("Bitte geben Sie die Server-Adresse ein: "); hostname = inFromUser.readLine(); InetAddress IPAddress = InetAddress.getByName(hostname);
// Gew�nschte Anzahl von Pings vom Benutzer abfragen
System.out.println("Bitte geben Sie die Anzahl gew�nschter Pings ein: "); Long pingCount = new Long(inFromUser.readLine()); // bei jedem Ping wird Z�hlerstand auf dem Server um 1 erh�ht
Long number = new Long(1); sendData = number.toString().getBytes();
// Paket f�r Empfang erzeugen
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
long average = 0; // Variable zur Ermittlung des durchschnittlichen Delays
// Pings ausf�hren
for (long i = 0; i < pingCount; i++) { // Anfrage an Server senden
long timestampStart = System.currentTimeMillis(); DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, udpPort); clientSocket.send(sendPacket);
// Antwort von Server empfangen
receivePacket = new DatagramPacket(receiveData, receiveData.length); clientSocket.receive(receivePacket); // Delay aus Zeit zwischen Zeitstempeln vor Versand und nach Empfang berechnen
long timestampEnd = System.currentTimeMillis(); long delay = timestampEnd - timestampStart; // Delay auf Variable f�r Ermittlung des durchschnittlichen Delays addieren
average += delay; System.out.println("Delay = " + delay + " ms");
// 1 Sekunde warten
Thread.sleep(1000); }
// Durchscnitt berechnen und ausgeben
System.out.println("Durchschnitt: " + (average / (float) pingCount) + " ms"); System.out.println(System.lineSeparator());
// Antwort vom Server ausgeben
String result = new String(receivePacket.getData()); System.out.println("Letzte Ausgabe vom Server:" + System.lineSeparator() + result); System.out.println(System.lineSeparator());
// Socket schlie�en
clientSocket.close(); } }
|