Since you're trying to measure latency, I would avoid using Strings (and Readers) and stick with byte arrays and Input/OutputStream. By using Strings and Readers, you are also measuring the time it takes to convert the String to a byte array in your calculations, giving you incorrect results.
I would recommend creating a byte array of the maximum size you need (again to avoid including looping time in your calculations) and then use OutputStream.write(buffer, 0, length). You can very length and reuse the same buffer. You might also want to use java.util.Random to fill the byte array just to be super cool.
If both client and server know the lengths to expect, You can avoid sending the length before the "string" of bytes. Otherwise, DataOutputStream will help you as you can send an int and then the byte array. DataInputStream has the readFully(byte[], offset, length) method that could prove useful.
Note also that sending 128k bytes will not be a single packet, so you'll definitely be including a lot of time for writing/reading to/from the socket, but I suppose that's what the assignment asks so it's fine.