How many times is your Python program reading? It may be that each byte is sent in a separate packet. You could try having the Python program do 3 reads.
Try changing to this: when you call stop, the connection is closing, perhaps before the data gets through the buffers on the target. (Although the TCPIP is sent synchronously and the data is sent out in packets before the stop registers, the stop may force your receiver's connection to close, destroying the buffer with the data you just sent after only the first read.)
If you have a lot of processing on the receiver, increase delay.
int val;
..
..
byte MSB = val >> 8;
byte LSB = val & 0xFF;
// now write bytes
//e.g
server.write(MSB);
server.write(LSB);
....
// then read them back
val = (MSB << 8) | LSB;