Visto che devi principalmente trasferire valori primitivi (int), ti suggerisco di usare DataInputStream/DataOutputStream in entrambe le parti client E server.
Il client fa 2 dos.writeInt(n), poi un dos.flush() poi un dis.readInt()
Il server fa 2 dis.readInt(), poi un dos.writeInt(n) poi un dos.flush()
Questo è molto più "simmetrico" rispetto a quanto stavi facendo.