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.
70 lines
2.3 KiB
70 lines
2.3 KiB
package perf;
|
|
|
|
import java.io.BufferedReader;
|
|
import java.io.InputStreamReader;
|
|
import java.net.DatagramPacket;
|
|
import java.net.DatagramSocket;
|
|
import java.net.InetAddress;
|
|
import java.net.SocketTimeoutException;
|
|
import java.text.DateFormat;
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.Date;
|
|
|
|
class UDPPerfClient {
|
|
public static void main(String argv[]) throws Exception {
|
|
String hostname = "";
|
|
int udpPort = 36039;
|
|
DateFormat df = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
|
|
|
|
//System.out.println("Bitte geben Sie die Server-Adresse ein: ");
|
|
//hostname = inFromUser.readLine();
|
|
hostname = "127.0.0.1";
|
|
InetAddress serverAddress = InetAddress.getByName(hostname);
|
|
|
|
while (true) {
|
|
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
|
|
System.out.print("Bitte geben Sie die Anzahl zu übertragender Megabytes ein: ");
|
|
Long numberOfMegabytes = new Long(inFromUser.readLine());
|
|
//Long number = (long)1;
|
|
|
|
DatagramSocket clientSocket = new DatagramSocket();
|
|
clientSocket.setSoTimeout(5000);
|
|
|
|
long timestampStart = System.currentTimeMillis();
|
|
System.out.println("Zeit vor Versand = " + timestampStart + " ms, " + df.format(new Date(timestampStart)));
|
|
byte[] outbuffer = (new String(numberOfMegabytes + "\n")).getBytes();
|
|
DatagramPacket sendPacket = new DatagramPacket(outbuffer, outbuffer.length, serverAddress, udpPort);
|
|
clientSocket.send(sendPacket);
|
|
|
|
if (numberOfMegabytes == 0) {
|
|
break;
|
|
}
|
|
|
|
long totalBytesReceived = 0;
|
|
while (true) {
|
|
byte[] receiveData = new byte[1024];
|
|
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
|
|
try {
|
|
clientSocket.receive(receivePacket);
|
|
} catch (SocketTimeoutException ste) {
|
|
System.out.println("Timeout");
|
|
break;
|
|
}
|
|
|
|
String receivedString = new String(receiveData);
|
|
if (receivedString.contains("done")) {
|
|
System.out.println("Ende der Übermittlung erkannt.");
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
totalBytesReceived += receivePacket.getLength();
|
|
System.out.println(totalBytesReceived + " Bytes insgesamt empfangen.");
|
|
}
|
|
|
|
}
|
|
System.out.printf("Insgesamt %d Bytes von %d (%d MB) empfangen.\n", totalBytesReceived - 4, (1024 * 1024) * numberOfMegabytes, numberOfMegabytes);
|
|
clientSocket.close();
|
|
}
|
|
}
|
|
}
|