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 perf;
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.ServerSocket; import java.net.Socket;
class TCPPerfServer { public static void main(String argv[]) throws Exception { int tcpPort = 36039; Long clientNumberOfMegabytes;
ServerSocket serverSocket = new ServerSocket(tcpPort);
System.out.println("TCPPerfServer gestartet. Warte auf eingehende Requests..."); while (true) { Socket connectionSocket = serverSocket.accept();
BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream())); BufferedWriter outToClient = new BufferedWriter(new OutputStreamWriter(connectionSocket.getOutputStream()));
char[] buffer = new char[1024]; clientNumberOfMegabytes = new Long(inFromClient.readLine()); if (clientNumberOfMegabytes == 0) { connectionSocket.close(); break; } System.out.println("Request von TCPPerfClient " + connectionSocket.getInetAddress() + ":" + connectionSocket.getPort() + " empfangen. Erzeuge und sende " + clientNumberOfMegabytes + "MB ...");
for (long mb = 0; mb < clientNumberOfMegabytes; mb++) { long megabyteStartTimeMilli = System.currentTimeMillis(); for (long segment = 1; segment < 1024; segment++) { long segmentStartTimeNano = System.nanoTime(); outToClient.write(buffer); if (clientNumberOfMegabytes == 1) { double transferDurationSegment = System.nanoTime() - segmentStartTimeNano; //System.out.printf("Dauer pro Segment: %.0f ns, Rate: %.0f KByte/s (MB: %d, Segment: %d)\n", transferDurationSegment, (1024 / (transferDurationSegment / 1000000000)), mb, segment);
// CSV Output Excel
System.out.println(mb + "," + segment + "," + transferDurationSegment); } } double transferDurationMB = System.currentTimeMillis() - megabyteStartTimeMilli; System.out.printf("1 MB (genauer MiB) gesendet in: %.0f ms, Rate: %.0f Bytes/s (MB: %d)\n", transferDurationMB, ((1024 * 1024) / (transferDurationMB / 1000)), mb); } System.out.print("\n"); connectionSocket.close(); } serverSocket.close(); } }
|