A byte cannot be lost , I think
Well, I can tell you for a fact that they can.
A byte can contain any value in the range 0 to 255. The bytes sent by the println() method fall in that range. How will you distinguish between MSB, LSB, CR, LF and MSB, CR, LF, MSB, when the LSB gets lost? Or between MSB, LSB, CR, LF and MSB, LSB, CR, MSB when the LF gets lost?
Sending binary data requires special care, and that special care often makes it slower than sending ASCII data.
Of course, you could always say "Oh, that won't happen", and hope that it is true.
The simplest solution is to send the number of bytes up front, as ASCII data. Then, send the ints as bytes. Then, send some sort of "We be done" packet.
On the receiving end, compare the number of bytes received, if the "We be done" packet arrives intact, to the number expected, and discard the whole lot if there is a mismatch, or if the "We be done" packet is incomplete, because a byte was lost.