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

5 years ago
  1. package perf;
  2. import java.io.BufferedReader;
  3. import java.io.InputStreamReader;
  4. import java.net.DatagramPacket;
  5. import java.net.DatagramSocket;
  6. import java.net.InetAddress;
  7. import java.net.SocketTimeoutException;
  8. import java.text.DateFormat;
  9. import java.text.SimpleDateFormat;
  10. import java.util.Date;
  11. class UDPPerfClient {
  12. public static void main(String argv[]) throws Exception {
  13. String hostname = "";
  14. int udpPort = 36039;
  15. DateFormat df = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
  16. //System.out.println("Bitte geben Sie die Server-Adresse ein: ");
  17. //hostname = inFromUser.readLine();
  18. hostname = "127.0.0.1";
  19. InetAddress serverAddress = InetAddress.getByName(hostname);
  20. while (true) {
  21. BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
  22. System.out.print("Bitte geben Sie die Anzahl zu �bertragender Megabytes ein: ");
  23. Long numberOfMegabytes = new Long(inFromUser.readLine());
  24. //Long number = (long)1;
  25. DatagramSocket clientSocket = new DatagramSocket();
  26. clientSocket.setSoTimeout(5000);
  27. long timestampStart = System.currentTimeMillis();
  28. System.out.println("Zeit vor Versand = " + timestampStart + " ms, " + df.format(new Date(timestampStart)));
  29. byte[] outbuffer = (new String(numberOfMegabytes + "\n")).getBytes();
  30. DatagramPacket sendPacket = new DatagramPacket(outbuffer, outbuffer.length, serverAddress, udpPort);
  31. clientSocket.send(sendPacket);
  32. if (numberOfMegabytes == 0) {
  33. break;
  34. }
  35. long totalBytesReceived = 0;
  36. while (true) {
  37. byte[] receiveData = new byte[1024];
  38. DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
  39. try {
  40. clientSocket.receive(receivePacket);
  41. } catch (SocketTimeoutException ste) {
  42. System.out.println("Timeout");
  43. break;
  44. }
  45. String receivedString = new String(receiveData);
  46. if (receivedString.contains("done")) {
  47. System.out.println("Ende der �bermittlung erkannt.");
  48. break;
  49. }
  50. else
  51. {
  52. totalBytesReceived += receivePacket.getLength();
  53. System.out.println(totalBytesReceived + " Bytes insgesamt empfangen.");
  54. }
  55. }
  56. System.out.printf("Insgesamt %d Bytes von %d (%d MB) empfangen.\n", totalBytesReceived - 4, (1024 * 1024) * numberOfMegabytes, numberOfMegabytes);
  57. clientSocket.close();
  58. }
  59. }
  60. }