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(); } } }